3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ProxmoxVEのPinningによるCPUパフォーマンス向上

Last updated at Posted at 2022-02-24

はじめに

実機のマシンに限りなく近い性能を出すためにGPU Passthrough、HugePageといった設定を行なってきた。CPU Pinningという手法を今回試してみる

CPU Pinningとは

物理マシンで12スレッドあり、仮想マシンに4スレッド割り当てた場合を考える。物理CPUの4スレッドだけを使用すると思ってしまうが、実際には12スレッドを満遍なく使用する。例えば2スレッド5台の場合には複数の仮想マシンの処理を同じ物理スレッドで行うためパフォーマンスが低下してしまう。
物理スレッドと仮想スレッドを1対1で固定するのがCPU Pinningである。

効果あるの?

MicrosoftのCpuStresを負荷確認に使用
https://docs.microsoft.com/ja-jp/sysinternals/downloads/cpustres
スレッドの効率をSandraでベンチマークした
https://www.sisoftware.co.uk/

CPUをCpuStresで使用率100%にする
スクリーンショット 0004-02-25 5.01.00.png

設定前

親から見た使用状況。スレッドが4以上に分散していることがわかる
スクリーンショット 0004-02-25 5.02.10.png
Sandraの結果
スクリーンショット 0004-02-25 5.09.25.png
スクリーンショット 0004-02-25 5.10.16.png

設定後

スレッドが4に固定されている
スクリーンショット 0004-02-25 5.14.35.png
Sandraの結果。スレッド間の帯域幅が向上していることがわかる
スクリーンショット 0004-02-25 5.20.58.png
スクリーンショット 0004-02-25 5.21.44.png

基本的な設定方法

追記

ProxmoxVEのアップデートによりCUIでtasksetを実行するのと同じことがGUI上でできるようになったので、そちらの方法を推奨

仮想マシン起動後にホストの方で以下のようなコマンドを実行する

taskset --cpu-list --all-tasks --pid 固定するスレッド番号 プロセスID

スレッド番号は0始まりで12スレッドなら0〜11となる。数値を入力しても良いが、「0-3」等の範囲指定もできる。プロセスIDはVMのプロセスIDを指定する。
VMのプロセスIDは「/run/qemu-server/VM番号.pid」で取得できるので、4スレッド、VM番号107の場合は以下のコマンドとなる

taskset --cpu-list --all-tasks --pid 0-3 $(< /run/qemu-server/107.pid)
3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?