
Proxmox上のコンテナ/VMで性能がどこまで出るか調べてみた
NucBox M5にProxmoxを入れて簡単にVMやコンテナを作れるようになったので、各構成の性能差を見ていきます。
前回の振り返り
ネイティブWindows: 16CPU (HT), 16GB RAM
PC上で直接Windows 11 Proを動かした場合のGeekbench 6のスコアは下記の通りでした。恐らくこれがフルパワーです。

Windows VM: 16CPU (HT), 8GB RAM
Proxmox上にWindows 11 ProのVMを立てた場合のスコアは下記の通りでした。
ネイティブ版と比較して3〜4%の性能ダウンでした。

Linux VMとの比較
さてここからが今回のテーマです。
LinuxとWindowsでどれくらいスコアが違うのか見たいと思います。
Debian VM: 16CPU (HT), 8GB RAM
LinuxとしてDebian 12を使うことにしました。
ProxmoxのベースがDebianであることに加え、余計な機能が少ないので性能を出し切れると考えたからです。
結果は下記の通りでした。
驚くことにVMのLinuxのスコアはネイティブWindowsを5〜7%上回っていました。

Geekbench的にはWindowsよりもLinuxの方が有利なのかもしれません。
Linuxコンテナとの比較
次はコンテナと比較します。
コンテナの方がVMよりリソース利用効率がよいはずなのでさらなるスコアアップも期待されますが結果は…
Debian コンテナ: 16CPU (HT), 8GB RAM

また意外な結果となりました。
並べるとこうです。
Single: Win VM < Linuxコンテナ < Linux VM
Multi: Win VM < Linux VM < Linuxコンテナ
シングルのスコアはLinux VMが高くてマルチのスコアはLinuxのコンテナが高い。
どちらもコンテナの方が上かなと予想していたのでこれはどういう意味なんだろう。
何回か取ったら結果が変わるかもしれませんが、あまり深追いしないことにします。
どちらにせよWindowsよりLinuxの方がPCの性能をフルに活かせそうです。
CPUコア数の比較
コンテナに16コア割り当てればフルパワーが出ることが分かりましたが、せっかくのProxmoxなのに1コンテナで全リソースを使うのはもったいないです。
そもそもHyper Threading環境の8物理コアなので16コアを振ってもスコアの伸びは線形ではないはず。
ということでコア数を変えながらスコアがどのように変わるかも見ておきます。
Debian コンテナ: 12CPU (HT), 8GB RAM

Debian コンテナ: 8CPU, 8GB RAM

Debian コンテナ: 4CPU, 8GB RAM

Debian コンテナ: 2CPU, 8GB RAM

Debian コンテナ: 1CPU, 8GB RAM

まとめ
グラフにしてみました。

当然ですが物理コアの8コアを超えてからはHyper Threadingでごまかす世界なのでマルチコアのスコアの伸びが悪いです。
16コアの場合、8コアと比較して16%ほどの伸びでした。
ベンチマークのようにCPUを全力で使うものはHyper Threadingの効果が低いはずなのでこんな程度というのも納得です。
物理限界を超えない4コアと8コアの比較でも8コアの伸びが思ったほど良くないです。
この結果を踏まえるとCPUパワーが必須なアプリでもない限り、2〜4コア程度のコンテナで運用するのが効率が良さそうです。
性能評価は以上です。
次回以降はProxmox上のVMやコンテナで具体的なサービスを立ち上げていく予定です。