一会儿,我玩了一些新的Win2008虚拟机,发现了一些严重的问题。
服务器是Dell T610。 16Gig,4核心,8逻辑,2.4ghz Xeon,5600系列。 ESXi 4.1.0 guest是2008 64bit,带有2vCPU
我一直在用400meg的文件使用7Zip来testingCPU性能。 我们的服务器需求特别需要单线程性能,所以我只用一个线程运行7Zip。
7zip在虚拟机上运行4:50。 为了比较,在最近的2ghz,4core服务器上,这个过程需要4点。
这里显然是一个问题。
所以我试着设置7Zip.exe进程的进程亲和力。 这一次压缩只花了3:20。 请注意,在物理机器上设置相似性没有区别。 (同样快,打开或closures)在物理和虚拟机上,当没有设置亲和性时,可以看到taskman中所有内核之间的进程)
具有讽刺意味的是,在负载很重的机器上,任务会更快完成,因为它们更有可能保持在同一个CPU上。
问题是,为什么Windows有这样一个失去处理器亲和力,当Linux不?
“因此,对于主要是单个(或有限)的线程应用程序,有时最好将CPU关联设置为特定的核心或核心子集,这将允许”Turbo“处理器频率缩放进入并持续跳到各种可能不被放大的核心,甚至可能被缩小)。“
“到目前为止,OS调度器并没有考虑到单个内核的主动时钟速度(afaik),也许在未来的Windows版本中会有所改变,但至less在几年内似乎不大可能。