ngx_cpuinfo / kvm & qemu / ngx_cacheline_size
Maxim Dounin
mdounin at mdounin.ru
Mon Dec 3 13:55:34 UTC 2012
Hello!
On Sun, Dec 02, 2012 at 12:15:03PM +0100, Bertrand Paquet wrote:
> Hi,
>
> I have virtual machine running on qemu / kvm.
>
> cat /proc/cpuinfo give :
> processor : 0
> vendor_id : GenuineIntel
> cpu family : 6
> model : 2
> model name : QEMU Virtual CPU version 1.1.2
> stepping : 3
> microcode : 0x1
> cpu MHz : 1999.999
> cache size : 4096 KB
> fpu : yes
> fpu_exception : yes
> cpuid level : 4
> wp : yes
> flags : fpu de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pse36
> clflush mmx fxsr sse sse2 syscall nx lm up rep_good nopl pni cx16 popcnt
> hypervisor lahf_lm
> bogomips : 3999.99
> clflush size : 64
> cache_alignment : 64
> address sizes : 40 bits physical, 48 bits virtual
> power management:
>
> the code in ngx_cpuinfo use the model value (2), and set
> the ngx_cacheline_size to 32, instead of 64 given by cache_alignment in
> /proc/cpuinfo.
>
> On same host using vmware virtualization, /proc/cpuinfo give a model of 45,
> ngx_cacheline_size is set to 64.
>
> I think I can have low performances problems due to the ngx_cacheline_size
> of 32 under qemu virtualization. Do you confirm ?
>
> Do you think we have to change ngx_cpuinfo code to give ngx_cacheline_size
> 64 on qemu env ?
Incorrectly detected cache line size may result in slightly
non-optimal performance in some situations (I wouldn't suppose 32
vs 64 to result in more than a few percent difference in real word
nginx operation though, even on real hardware). On the other
hand, using virtualization ensures non-optimal performance in all
situations, so one using virtualization probably don't care
anyway.
(In any case there are no plans to change Intel CPUs cache line
size detection code to support fake emulated qemu CPUs. In
particular because it's not possible to tell which cache line size
is more effective for a given emulated CPU. It's up to you to
configure qemu to emulate a CPU with a cache line size most
effective on your hardware if you think you care.)
--
Maxim Dounin
http://nginx.com/support.html
More information about the nginx
mailing list