→ 1.ディスク編
2.メモリ編
ProxmoxVEには無数の設定の組み合わせがあり、公式Wikiなどの情報からベストプラクティスが得られる。但しどの程度の差があるのか等の情報は見当たらないため、各種ベンチマーク結果を記事にしてみた。
前提
ゲストOSの再インストールが必要な設定変更の検証は行わない。
環境は以下の通り
項目 | 内容 |
---|---|
ProxmoxVE バージョン | 6.4-6 |
マザーボード | ASRock AB350 Pro4 |
CPU | AMD Ryzen 5 1600 Six-Core |
メモリ | 16GB |
グラフィックボード | GeForce GTX 1050 Ti |
SSD | Samsung SSD 750 120GB |
HDD | WDC WD40EZRZ-00G |
ネットワークカード | Intel Corporation 82574L |
ゲストOS | Windows Server 2016 Essensial |
その他、開始時の設定
- ファイルシステムはext4。relatime付き。barrier解除は行っていない。ファイルシステムを壊してしまったことがあったのでやめました。
- 各種Vertioドライバーはインストール済み
- ゲストマシン用に物理ストレージを別で用意している
- 仮想マシンのディスクイメージはraw。qcow2より10%高速とのこと
Use raw disk image and not qcow2
Consider using raw image or partition for a partition, especially with Microsoft SQL database files because qcow2 can be very slow under such type of load.
結論
- キャッシュはHDDの場合、Write back
- キャッシュはSSDの場合、Write back(unsafe)
- SSDならSSD エミュレーションはON
- IO ThreadはON
- SCSIコントローラーはVirtio SCSI Single
- Barrier無効化は効果があるがリスク対効果を考えて設定
検証内容
Windows環境で各種ベンチマークソフトを動作させました。バックグラウンドで色々動作している可能性がありますので、ブレはあるかもしれません。
ストレージ編
キャッシュの設定
公式WikiによるとUnsafeが最もパフォーマンスが良い
https://pve.proxmox.com/wiki/Performance_Tweaks
HDD
既定(キャッシュなし)HDD
Direct sync HDD
Write through HDD
Write back HDD
Write back(unsafe) HDD
SSD
既定(キャッシュなし)SSD
Direct sync SSD
Write through SSD
Write back SSD
Write back(unsafe) SSD
以降のベンチはWrite back(unsafe)で進めることにした
SSD エミュレーションを外した場合
劣化したので、以降のベンチはSSD エミュレーション有効に戻して実施
IO Threadを外した場合
劣化したので、以降のベンチはIO Thread有効に戻して実施
SCSIコントローラーをVirtio SCSI SingleからVirtio SCSIへ変更した場合
劣化したので、以降のベンチはVirtio SCSI Singleに戻して実施
ホスト側でext4のBarrierを無効化した場合
一部向上。リスクがあるが、Barrier=0で今後はベンチを進める
参考)Barrier解除の方法
fstabの各ディスクにoptionがあるので、「defaults,」の後ろあたりに追記する
vim /etc/fstab
UUID=e78ae19e-11d9-44b1-af70-2a9301ea5639 /mnt/ssd2 ext4 defaults,barrier=0,noatime,discard 0 0
ProxmoxVEのWikiによるとデフォルトの「キャッシュなし」はパフォーマンスと安全性のバランスに優れているとあるが、ベンチマークの結果を見るとWriteBackが良いのではないかと思う。
https://pve.proxmox.com/wiki/Performance_Tweaks#Disk_Cache