けさらんぱの自由帳

とあるFF14プレイヤーがFF14のこととか関係ないことを書いていく予定のブログです。記載されている会社名・製品名・システム名などは、各社の商標、または登録商標です。

リアルタイムバーチャルマシン

そんな用語があるのか? という感じのタイトルですが、Windowsをインストールしている仮想環境に関わるプロセスの優先度をリアルタイムにしてみました。リアルタイムプロセスは普通のプロセスより優先されるので、ホスト側(Linux)で普通に処理を動かしても仮想環境側(Windows)の処理を重くしなくなるはず、です。多分。

libvirtの設定

下記をlibvirtXMLファイルに追記します。

<domain type='kvm'>
  <cputune>
    <emulatorsched scheduler='rr' priority='1'/>
    <vcpusched vcpus='0-13' scheduler='rr' priority='1'/>
    <iothreadsched iothreads='1-2' scheduler='rr' priority='1'/>
  </cputune>
</domain>

scheduler

chrt コマンドでいうところのスケジューリングポリシーを設定します。

設定値 説明
fifo First In-First Outの略。リアルタイムプロセスにする。
時間経過で他のプロセスに切り替わったりしない。
rr Round Robinの略。リアルタイムプロセスにする。
時間経過で同じ優先度の他のプロセスに切り替わる。
batch バッチプロセスにする。スケジューリングにおいて少しだけペナルティを受ける。
idle アイドルプロセスにする。優先度をとても低くする。

priority

リアルタイムプロセスの場合に指定します。1から99までの値で、数字が大きいほど優先度が高くなります。

vcpus

対象となる仮想CPUを指定します。

iothreads

対象となるIOスレッドを指定します。

記載されている会社名・製品名・システム名などは、各社の商標、または登録商標です。