JavaScriptを有効にしてください

KVMでオーディオなどの割り込み処理が妙に遅い

 ·   ·  ☕ 2 分で読めます

この記事を読む前に

  • この記事は、割り込み処理全体が遅延してオーディオがバッファアンダーランし、いわゆるpoppingしてしまう場合の対処法です。

  • 基本事項として、CPU Pinning,hugepages等のボトルネック対策を行っていることが前提となっています。

環境

  • Host: ArchLinux 2020/7/28

  • Guest: Windows server 2019 Essentials

症状

  • オーディオにポップ音が入りプツプツと再生が途切れる。

  • USBオーディオデバイス等に変えても変わらず。

  • LatencyMon等の割り込み処理の遅延を確認できるソフトで確認すると、遅延が高すぎて最大遅延がグラフの最大値を突破している。

  • 仮想マシン自体は問題なく動作しているように見えるが、Linux側で重い動作をしている最中にマウスを動かすとマウスだけがカクつく。

解決策

Linuxの使用するコアとWindowsの使用するコアを分ける。

方法

※8コア環境を例としています。

まず、Linuxが特定コアを使わないようにする。

ブートオプションにisolcpus=0-5を追記。(0-5番コアを使用しない)

次に、そのコアをWindowsが使うように設定する。

例(Libvirt XML)

1
2
3
4
5
6
7
8
9
  <vcpu placement="static" cpuset="0-5">6</vcpu>
  <cputune>
    <vcpupin vcpu="0" cpuset="0"/>
    <vcpupin vcpu="1" cpuset="1"/>
    <vcpupin vcpu="2" cpuset="2"/>
    <vcpupin vcpu="3" cpuset="3"/>
    <vcpupin vcpu="4" cpuset="4"/>
    <vcpupin vcpu="5" cpuset="5"/>
  </cputune>

(適宜iothreadsやemulatorpinの設定も行ってください。)

ホストをReboot(ブートオプションを反映させるため)

共有

hayabusa2yk
著者
hayabusa2yk
Dev/Admin of servers