在低延迟交易应用程序中,我们非常注意延迟问题。如果运行它的服务器更改 PowerNow 状态,我们的应用程序可能会遇到延迟增加的问题。
任何熟悉调用 PowerNow 更改的内核开发人员以及操作使用了多少处理器时间以及延迟/延迟特性是什么样的?
英特尔 SpeedStep 的相同信息会很有用,但我们实际使用的是 PowerNow。
谢谢!
在低延迟交易应用程序中,我们非常注意延迟问题。如果运行它的服务器更改 PowerNow 状态,我们的应用程序可能会遇到延迟增加的问题。
任何熟悉调用 PowerNow 更改的内核开发人员以及操作使用了多少处理器时间以及延迟/延迟特性是什么样的?
英特尔 SpeedStep 的相同信息会很有用,但我们实际使用的是 PowerNow。
谢谢!
Linux 内核似乎假设完成 PowerNow 状态更改操作的上限为五分之一毫秒。
不过,我认为比状态更改本身的成本更大的担忧是,降低 CPU 频率会使您的应用程序运行速度变慢,从而增加整体延迟。
我怀疑它有任何延迟。PowerNow 只是降低核心频率和核心电压。我不知道它会在短时间内停止 CPU 这样做,然后在更改后恢复处理。AFAIK 更改是即时发生的,因此不会中断处理。
因此,更大的问题可能是您依赖于一定的速度(例如,您假设处理器每秒可以执行那么多操作),但是当核心频率降低时,它会表现得像一个更慢的 CPU(每秒的操作更少)和核心频率不会因为 CPU 不是 100% 空闲而跳到最大值。当 CPU 认为它需要比当前更多的处理能力时,它会再次跳起来。
在 Linux 上,如果您在其上运行带有 Windows 的 VMWare,PowerNow 可能会导致严重问题。Windows 无法正确更新内部时钟,因为它似乎没有检测到 PowerNow 有效(我猜是因为它在虚拟机中运行)并且 VMWare for Linux 也无法正确处理这种情况。因此,一旦 PowerNow 处于活动状态,Windows 时钟就会落后,并且 VMWare 会不时检测到这一点并再次更正时钟。到目前为止一切顺利,但是依赖于 Windows 时钟的应用程序会看到这种奇怪的跳跃并且表现得相当奇怪(例如,我知道的无线电流媒体软件会在 MP3 流中跳跃,并且每次重新同步时钟时都会跳过几毫秒)。
如果您的应用程序强烈依赖于稳定的程序流,您可能希望完全禁用 PowerNow 功能。使用互联网广播流软件,这是解决跳过问题的唯一方法。