# Qemu verursacht regelmäßig hohe CPU-Last

## tranqil

Hallo liebe Leute,

ich habe ein sonderbares Problem mit meiner libvirtd/qemu Installation, bzw. der Prozess der einzigen Domain verursacht alle paar Sekunden extrem hohe CPU-Last auf dem Hostsystem, obwohl nicht einmal 50% der zugewiesenen CPU-Power im Gast-System in Anspruch genommen werden. Auf dem virtualisierten Windows 7 Host laufen mehrere Gameserver, leider führen diese "Ressourcenengpässe" wohl zu Lags auf diesen. Nachfolgend die Domain-Konfiguration wie sie ausgeführt wird:

```

/usr/bin/qemu-system-x86_64 -machine accel=kvm -name server-1-01 -S -machine pc-i440fx-1.4,accel=kvm,usb=off -cpu SandyBridge,+erms,+smep,+fsgsbase,+rdrand,+f16c,+osxsave,+pcid,+pdcm,+xtpr,+tm2,+est,+smx,+vmx,+ds_cpl,+monitor,+dtes64,+pbe,+tm,+ht,+ss,+acpi,+ds,+vme -m 4096 -realtime mlock=off -smp 3,sockets=3,cores=1,threads=1 -uuid ddb46ed5-affc-bac7-fabd-b663abedcaf8 -no-user-config -nodefaults -chardev socket,id=charmonitor,path=/data/virtual//.config/libvirt/qemu/lib/server-1-01.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=localtime -no-shutdown -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 -drive file=/data/virtual/domains/server-1-01.ovl,if=none,id=drive-ide0-0-0,format=qcow2 -device ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 -netdev user,id=hostnet0 -device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:b6:66:49,bus=pci.0,addr=0x3 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -device usb-tablet,id=input0 -vnc 127.0.0.1:0 -k de -device VGA,id=video0,bus=pci.0,addr=0x2 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x4 -redir tcp:3389::3389 -redir udp:27888::27888 -redir udp:27900::27900 -redir udp:27901::27901 -redir udp:27015::27015

```

Noch ein paar Infos zum Hostsystem:

nodeinfo:

```

CPU model:           x86_64

CPU(s):              8

CPU frequency:       3400 MHz

CPU socket(s):       1

Core(s) per socket:  4

Thread(s) per core:  2

NUMA cell(s):        1

Memory size:         16317072 KiB

```

capabilities:

```

<host>

    <uuid>16531585-d506-47dd-a642-b7fcb5154bf6</uuid>

    <cpu>

      <arch>x86_64</arch>

      <model>SandyBridge</model>

      <vendor>Intel</vendor>

      <topology sockets='1' cores='4' threads='2'/>

      <feature name='erms'/>

      <feature name='smep'/>

      <feature name='fsgsbase'/>

      <feature name='rdrand'/>

      <feature name='f16c'/>

      <feature name='osxsave'/>

      <feature name='pcid'/>

      <feature name='pdcm'/>

      <feature name='xtpr'/>

      <feature name='tm2'/>

      <feature name='est'/>

      <feature name='smx'/>

      <feature name='vmx'/>

      <feature name='ds_cpl'/>

      <feature name='monitor'/>

      <feature name='dtes64'/>

      <feature name='pbe'/>

      <feature name='tm'/>

      <feature name='ht'/>

      <feature name='ss'/>

      <feature name='acpi'/>

      <feature name='ds'/>

      <feature name='vme'/>

    </cpu>

    <power_management/>

    <migration_features>

      <live/>

      <uri_transports>

        <uri_transport>tcp</uri_transport>

      </uri_transports>

    </migration_features>

    <topology>

      <cells num='1'>

        <cell id='0'>

          <memory unit='KiB'>16317072</memory>

          <cpus num='8'>

            <cpu id='0' socket_id='0' core_id='0' siblings='0'/>

            <cpu id='1' socket_id='0' core_id='0' siblings='1'/>

            <cpu id='2' socket_id='0' core_id='1' siblings='2'/>

            <cpu id='3' socket_id='0' core_id='1' siblings='3'/>

            <cpu id='4' socket_id='0' core_id='2' siblings='4'/>

            <cpu id='5' socket_id='0' core_id='2' siblings='5'/>

            <cpu id='6' socket_id='0' core_id='3' siblings='6'/>

            <cpu id='7' socket_id='0' core_id='3' siblings='7'/>

          </cpus>

        </cell>

      </cells>

    </topology>

    <secmodel>

      <model>none</model>

      <doi>0</doi>

    </secmodel>

  </host>

```

Vielleicht kann mir ein KVM-Crack dabei helfen, wie ich das Problem etwas eingrenzen kann. Momentan zeigen mir weder qemu noch libvirtd irgendwelche Fehlermeldungen.

Hoffe die Probleme resultieren nicht aus dem verwendeten "user-mode" Netzwerk, allerdings kann ich mir das eigentlich auch nicht vorstellen, bin nicht bereit für diesen eher unwichtigen Server eine Bridge einzurichten.

Vielen lieben Dank!

----------

## mike155

Zunächst einmal: was heißt hohe Last? Load-Average? CPU-Ausnutzung? Poste mal die ersten 10 Zeilen von 'top'.

Ich würde erst einmal weitere Daten sammeln. Dazu würde ich alle Game-Server unter Windows stoppen. Wie ist die CPU-Last dann auf dem 

Linux Host System? Dann würde ich die Gameserver einzeln starten und schauen, bei welchen von den Game-Servern das Problem auftritt.

3 CPUs ist eher keine gute Wahl - ich würde entweder 2 oder 4 nehmen - aber das ist sicher nicht der Grund für das beschriebene Problem.

----------

## tranqil

Hallo bug_report, vielen Dank für deine Antwort.

Mit hoher Last meine ich, dass alle verwendeten CPUs (in diesem Fall 3), alle 4-5 Sekunden zu 90-100% ausgelastet sind. Und dann aber auch nur für maximal eine Sekunde. Die Durchschnitsslast des Hostsystems wird dadurch nicht merklich belastet.

```

top - 19:16:45 up 248 days, 10:45,  25 users,  load average: 1.04, 0.99, 0.96

Tasks: 155 total,   1 running, 154 sleeping,   0 stopped,   0 zombie

%Cpu(s):  5.5 us,  7.1 sy,  0.0 ni, 87.3 id,  0.1 wa,  0.0 hi,  0.0 si,  0.0 st

KiB Mem:  16317072 total, 15738112 used,   578960 free,   628572 buffers

KiB Swap: 16780284 total,   431064 used, 16349220 free,  8815792 cached

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND

18737 virt      20   0 4634900 4.015g   5308 S 101.2 25.80   1959:26 qemu-system-x86

...

```

Auch ohne gestartete Gameserver, wird die ungewöhnlich hohe CPU-Last erzeugt, während das Gastsystem im Durchschnitt auf 20% Auslastung kommt.

 *Quote:*   

> 3 CPUs ist eher keine gute Wahl - ich würde entweder 2 oder 4 nehmen

 

Ich hatte den Server die ganze Zeit unter 2 CPUs betrieben und dies erst vor kurzem auf 3 geändert (in der Hoffnung etwas an diesem Last-Problem zu ändern), aber das hat rein garnichts bewirkt.

----------

## mike155

Hallo tranqil, 

OK, Dein System verhält sich ungewöhnlich. Wenn auf dem Gast-Windows keine Programme laufen, sollte die Ausgabe von top auf dem Linux-Host ungefähr so aussehen:

```

top - 20:34:52 up 1 day, 23:16,  3 users,  load average: 0,08, 0,10, 0,12

Tasks: 184 total,   1 running, 183 sleeping,   0 stopped,   0 zombie

%Cpu(s):  0,6 us,  0,8 sy,  0,0 ni, 98,7 id,  0,0 wa,  0,0 hi,  0,0 si,  0,0 st

KiB Mem:  32718416 total,  6477580 used, 26240836 free,   791412 buffers

KiB Swap:        0 total,        0 used,        0 free,  2340900 cached

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND

14703 kvm       20   0 2503744 1,988g   2148 S 7,313 6,371   2:12.47 qemu-system-x86
```

D.h. man sieht auf dem Linux Host ein paar Prozent CPU-Last, aber bei weitem nicht in der Größenordnung, die Du geschrieben hast. Und die Windows CPU-Auslastungs-Anzeige auf dem Windows-Gast sollte 0% oder vielleicht 1% ausgeben.

Als nächstes habe ich folgende Fragen:

Wie kommen die 20% CPU-Last unter Windows zustande? Die CPU-Last, die Windows anzeigt, sollte doch im Leerlauf fast bei 0 liegen, oder? Laufen unter Windows noch Programme wie: Bildschirmschoner, Anti-Virus-Programm, Disk-Optimizer? Wenn Windows 20% CPU-Last anzeigt, liegt das Problem wahrscheinlich in der Windows VM und ich würde erst einmal dort optimieren, bis Windows im Leerlauf nur noch 0% anzeigt. Welche Windows-Version benutzt Du?

Welchen Linux-Kernel und welche Qemu-Version verwendest Du auf dem Host-System? Läuft QEMU wirklich mit dem KVM-Beschleuniger? Oder funktioniert KVM nicht?

Gibt es IO-Last auf dem Linux Host-System? Was sagen die Ausgaben von iostat oder iotop?

----------

## tranqil

Sorry für die verspätete Antwort:

Es ist Windows 7 im Einsatz, auf diesem befand sich neben den Gameservern lediglich ein AV-Programm - und wie ich jetzt nachträglich festgestellt habe, hat dieses auch dafür gesorgt, dass eine permanente Grund-CPU-Last von <25% zu verzeichnen war. Ich habe das Ding mal runtergeworfen. Jetzt zeigt Windows in der Tat kaum noch Last an - das Hostsystem schwankt aber immer noch stark. Ich werde das ein paar Tage beobachten und dann noch einmal berichten. Vielleicht war das des Rätsels Lösung.

Aber noch zur Vervollständigung:

Kernelversion:  3.10.1-hardened-r1

QEMU emulator version: 1.6.1

Hardwareseitige Virtualisierungsunterstützung ist im BIOS aktiviert und mit Linux Guests habe ich auch keine Probleme, allerdings laufen die auch ohne GUI.

IO-Auslastung war das erste was ich über einen längeren Zeitraum gecheckt hatte, dachte zuerst, es gäbe vielleicht ein Problem mit dem Controller, aber auch hier sieht mit den Schreib-/Leseraten alles gut aus.

----------

