2017-01-19 5 views
0

私はIntel(R)Xeon(R)CPU E3-1230 v2(合計8コア)のKVMホストを実行していました。 VLCプレーヤーを使用して1080pビデオを再生する場合、KVMプロセスの結果はperf statです。Qemu + kvm high cpu usage

Performance counter stats for process id '120879': 

     65235.881169 task-clock    # 1.631 CPUs utilized   [100.00%] 
      99,073 context-switches   # 0.002 M/sec     [100.00%] 
      16,616 cpu-migrations   # 0.255 K/sec     [100.00%] 
      8,280 page-faults    # 0.127 K/sec     
    129,136,372,749 cycles     # 1.980 GHz      [100.00%] 
    69,852,938,816 stalled-cycles-frontend # 54.09% frontend cycles idle [100.00%] 
    <not supported> stalled-cycles-backend 
    176,171,866,933 instructions    # 1.36 insns per cycle   
              # 0.40 stalled cycles per insn [100.00%] 
    13,853,398,215 branches     # 212.359 M/sec     [100.00%] 
     313,064,663 branch-misses    # 2.26% of all branches   

     40.001590915 seconds time elapsed 

VMゲストが多すぎるCPUを消費しています。実際のCPU周波数が3.3GHz(cpufreq governorは性能に設定されている)の間に、なぜ結果の周波数が1.98GHzであるのだろうと思います。また、コンテキストスイッチやCPUマイグレーションも頻繁に行われます。実行中の唯一のアプリケーションはVLCです。プロセスの

perf kvm --host --guest stat結果は次のとおりです。

Performance counter stats for process id '17720': 

     6935.898736 task-clock:HG    # 1.653 CPUs utilized   [100.00%] 
      11,713 context-switches:HG  # 0.002 M/sec     [100.00%] 
      2,027 cpu-migrations:HG   # 0.292 K/sec     [100.00%] 
      460,754 page-faults:HG   # 0.066 M/sec     
    24,166,977,190 cycles:HG     # 3.484 GHz      [100.00%] 
    12,972,225,263 stalled-cycles-frontend:HG # 53.68% frontend cycles idle [100.00%] 
    <not supported> stalled-cycles-backend:HG 
    33,789,733,514 instructions:HG   # 1.40 insns per cycle   
              # 0.38 stalled cycles per insn [100.00%] 
    3,111,479,733 branches:HG    # 448.605 M/sec     [100.00%] 
     60,351,733 branch-misses:HG   # 1.94% of all branches   

     4.196966586 seconds time elapsed 

QEMU-KVMのための構成は、(一部のデバイスとchardevオプションが省略されている)である。

私はCPUの使用量を減らすにはどうすればよい
qemu-kvm 
-chardev socket,id=qmp,path=/var/run/qemu-server/$vmid.qmp,server,nowait 
-mon chardev=qmp,mode=control 
-vnc :0,websocket,to=200 
-enable-kvm 
-daemonize 
-smp sockets=1,cores=2 
-cpu core2duo,hv_spinlocks=0xffff,hv_relaxed,hv_time,hv_vapic,+sse4.1,+sse4.2,+x2apic,+pcid,+pdcm,+xtpr,+ht,+ss,+acpi,+ds 
-nodefaults 
-vga qxl 
-spice port=0,disable-ticketing,up_port=5699,down_port=5500,os_type=win7,jpeg-wan-compression=never,jpeg_quality=85,streaming-video=filter 
-boot menu=off,splash-time=1 
-m 4096 
-drive file=/sf/data/local/images/host-001e67b7f807/9cef0faa00d6/Win7x86-VM0001_hzq.vm/vm-disk-1.qcow2,if=none,id=drive-virtio0,cache=none,aio=native,forecast=enable,cache_cnt=4096,cache_size=256 
-device virtio-blk-pci,drive=drive-virtio0,id=virtio0,bus=pci.0,addr=0xa,bootindex=100 
-rtc driftfix=slew,clock=rt,base=localtime 
-global kvm-pit.lost_tick_policy=discard 
-global PIIX4_PM.disable_s3=1 
-chardev socket,path=/var/run/qemu-server/$vmid.virtser,server,nowait,id=channelser 
-device qxl 

KVMの?

+0

エミュレーションを開始するときに、-enable-kvmパラメータを渡しましたか? – ViniCoder

+0

@ViniCoderはい、-enable-kvmが設定されています。 – useprxf

答えて

0

これが役立つかどうかはわかりませんが、バーチャル環境のソフトウェアでは、デコード時の効率が悪いことがあります。

あなたのWin7のゲストは、完全なホストCPUを使用してのXeonチップと全く問題はさらにいくつかの機能を追加しないかもしれない持っている場合あなたは既に機能の多くは、

-cpu core2duo,hv_spinlocks=0xffff,hv_relaxed,hv_time,hv_vapic,+sse4.1,+sse4.2,+x2apic,+pcid,+pdcm,+xtpr,+ht,+ss,+acpi,+ds 

を追加しました。

-cpu host 

また、あなたはすでにスパイス/ QXLは、それが思わゲストならびにのvirtio IOを有効にしている - 残念ながら何のWindowsのDirect3Dコードがenter link description here

のためまだありませんそれはあなたが使用しているソフトウェアをたくさんも依存する場合がありますあなたのゲストの中に - あなたが助けようとしている次の人のためにあなたの質問にそれを加えることができればうれしいでしょう。

+0

ありがとうございます。すでに '-cpu'ホストを試していますが、CPU使用率は依然として非常に高いです。それは頻繁なコンテキストスイッチにつながるリアルタイムクロック割り込みかもしれないので、私はいくつかの '-clock -rtc'設定を試しましたが、全く動作しません。 – useprxf

+0

過去には、単一のCPUとしてゲストを稼働させるだけで、時には肯定的な効果が得られることもありました。これらのケースでは、コンテキスト切り替えによってCPU割当てが頻繁に行われるだけでなく、ゲストのロックが非常に悪いものになりました。私はそれがあなたのケースにマッチするのではないかと疑っています。なぜなら、通常はデコードが非常にうまく並列化されているからです。 –

関連する問題