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