2015-07-01 2 views
-1

Я пытаюсь проверить разницу в производительности между QEMU-KVM и хост-машиной и не мог понять, как оптимизировать мой QEMU-KVM, чтобы достичь почти собственной производительности.Оптимизация производительности QEMU-KVM

Я установил QEMU-KVM с lubuntu 14.04 и выполнил микрофункцию напряжения, которая не вызывает промахов в кэше.

Я записываю счетчик производительности, инструкции удалены, используя инструмент перфорирования.

Поскольку QEMU не предоставляет этот счетчик производительности. Я записываю производительность всего процесса QEMU, используя perf из хост-системы.

Полученные результаты не отражают этого. Я не совсем уверен, как мне настроить подсистему QEMU-KVM.

Ниже описываются детали QEMU и хост-машины (голый металл).

QEMU эмулятор версии 2.0.0 в сочетании с KVM в виртуальной среде и Libvirt 1.2.2

Гость машина работает под управлением ядра версии 3.19.0-15-generic и хост-машина работает под управлением версии 3.14.5-031405-generic на x86_64 машины

guest machine with Intel SandyBridge processor (model name:Intel Xeon E312xx) with the following flags: sockets=1,cores=1,threads=1 and 4mb cache. 
More details: 
cpu family : 6 
model  : 42 
max freq  : 2394.560 MHz 
flags  : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx rdtscp lm constant_tsc rep_good nopl eagerfpu pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx hypervisor lahf_lm vnmi ept xsaveopt 


The host machine is an Intel Sandy Bridge processor (Intel(R) Core(TM) i7-2760QM CPU @ 2.40GHz) with 4 cores and 6mb cache. 
cpu family : 6 
model  : 42 
flags  : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx lahf_lm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid 

Сообщите мне, если я могу предоставить более подробную информацию.

Спасибо!

+0

Так что именно ваши вопросы? вы не видите больше отставных инструкций на виртуальных машинах? посмотрели ли вы на событие «нечеткие циклы»? –

+0

Я считаю, что проблема более вероятна, что она является частью ядра, а 'perfmon' не позволяет мне собирать статистику уровня ядра, тогда как' perf'. – tandem

ответ

0

Попробуйте использовать модификаторы событий, как описано в «списке помощи перфорация»:

EVENT MODIFIERS 
     Events can optionally have a modifer by appending a colon and one or more 
     modifiers. Modifiers allow the user to restrict the events to be counted. The 
     following modifiers exist: 

      u - user-space counting 
      k - kernel counting 
      h - hypervisor counting 
      G - guest counting (in KVM guests) 
      H - host counting (not in KVM guests) 
      p - precise level 
      S - read sample value (PERF_SAMPLE_READ) 
      D - pin the event to the PMU 

документация выше не является удовлетворительным ИМХО, и я не в полной мере понять смысл каждого модификатора события. Иногда я получаю несогласованные результаты, например. больше устаревших инструкций в подсчете пользовательского пространства (модификатор «u»), чем при полном подсчете (вообще никаких модификаторов).

Я использую следующую перфорацию версию:

>> perf --version 
perf version 3.13.11-ckt20