Re: KVM Processor cache size

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 08/02/2010 08:08 AM, Avi Kivity wrote:
 On 08/02/2010 03:51 PM, Andre Przywara wrote:
Ricardo Martins wrote:
Hi guys,

I'm having a problem with kvm, my physical machine have 2 processor
Xeon E5520, with 8 mb cache size, when i run "cat /proc/cpuinfo" the
linux shows 16 processors equal.

processor       : 15
vendor_id       : GenuineIntel
cpu family      : 6
model           : 26
model name      : Intel(R) Xeon(R) CPU           E5520  @ 2.27GHz
stepping        : 5
cpu MHz         : 1596.000
cache size      : 8192 KB
> ....
The problem is that when I run the same command on the virtual
machine, Linux shows the processors with only 32 kb, I believe that
anything is wrong.

processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 6
model name      : QEMU Virtual CPU version 0.9.1
stepping        : 3
cpu MHz         : 2266.575
cache size      : 32 KB
> ....
On virtual Machine:
linea:/# x86info
x86info v1.21.  Dave Jones 2001-2007


Found 1 CPU, but found 16d CPUs in MPTable.
--------------------------------------------------------------------------
Family: 6 Model: 6 Stepping: 3 Type: 0 Brand: 0
CPU Model: Celeron / Mobile Pentium II Original OEM
Feature flags:
 fpu de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36
clflsh mmx fxsr sse sse2
Extended feature flags:
 sse3 [31]
[0] [2] [3] [4] [5] [6] [7] [8] [9] SYSCALL [13] [15] [16] xd [23] [24] em64t
Cache info
 L1 Instruction cache: 32KB, 8-way associative. 64 byte line size.
 L1 Data cache: 32KB, 8-way associative. 64 byte line size.
 L2 unified cache: 2MB, sectored, 8-way associative. 64 byte line size.
TLB info

KVM (or better: the QEMU part) injects a bogus CPU model (compare family/model/name), which is the same on all host CPUs. This helps with migration, because the CPU does not change. The cache size is also the same, as it is part of the "cpuid" command output. You can use other CPU models (like kvm64) for better base models, but the cache size will likely not match your host processor's one. For that purpose exists the "host" CPU model, which will (to some degree) simply push your host CPU model to the guest. For now this only affects the family/model/stepping/name values and the feature flags. I sent a patch to include the cache size when using -cpu host, but this has been n'acked because the benefit is not clear.

Anthony, why was this NACKed? First, there are programs which query the cache size. That's why it's exposed! Second, -cpu host is for exposing as many host cpu features as we can, not just those we have an immediate use for. It's like 'cp -a' dropping attributes the author didn't care about.

That's exactly what the code does today BTW. The kernel module filters cpuid flags, qemu filters additional flags, and we don't pass everything through anyway.

-cpu host is a mess and needs some love. It's impossible to use correctly today in a production environment if you care about reliably generating the same guest visible interface.

Regards,

Anthony Liguori


--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux