ProxmoxVE 設定とベンチマーク結果まとめ（メモリ編）


[1.ディスク編](https://qiita.com/disksystem/items/b18412a69fdbf2fac0fc)
→ 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 | 

### その他、開始時の設定
VMは1つのみのため、KSM(メモリ共有)の影響はないと考えられる。
Virtioでバルーンドライバはインストール済みだが、設定で無効化している。使用しないほうがパフォーマンスが良いとのこと。
https://pve.proxmox.com/wiki/Performance_Tweaks

>Do not use the Virtio Balloon Driver
>The Balloon driver has been a source of performance problems on Windows, you should avoid it. (see >http://forum.proxmox.com/threads/20265-SOLVED-Hyper-Threading-vs-No-Hyper-Threading-Fixed-vs-Variable-Memory for the discussion thread) 

## 結論
* VM1台で運用するケース(PCI-Passthrough等)ではメモリそのものの性能はほぼ変化がなかった。
* 他の部分の性能への影響はあるかもしれないため、公式Wiki通りBalloon無効で運用する。

## 検証内容

CrystalMarkとPassMarkを使用する。CrystalMarkは32bit時代の頃のソフトのため、数値については正確でないかもしれないが設定の良し悪しがわかればよい

--- 

### 初期の設定
Ballooningは無効化している。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65278/2375d63d-44c3-06c1-d3bf-9f93606a05bc.png" width=450 />
### 測定結果
#### 初期状態
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65278/c5e7483b-fece-2dce-35d5-8b317e122279.png" width=450 />
![スクリーンショット 0003-05-14 22.12.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65278/c8073a3c-5a9f-6bfd-c652-2f1862d8f222.png)

--- 

#### Balloonを有効化（最小メモリとメモリサイズが同一）

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65278/f7514f4b-331e-f309-0cdd-b3c43b67c084.png" width=450 />
![スクリーンショット 0003-05-14 22.02.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65278/52dd5766-a44e-7444-42ee-61eb38374592.png)
若干劣化した。仮想マシンが複数ある場合のほうが影響があるかもしれない

--- 
#### Balloonを有効化（最小メモリを2048MBに設定）
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65278/99eb7f36-d80d-1679-1795-fd63af96876a.png" width=450 />
![スクリーンショット 0003-05-14 21.54.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65278/ddc3f419-32e7-15b2-ff19-a823658623e5.png)

微妙に劣化した。複数のVMの場合はもう少し影響が大きいと思われる。

--- 
#### HugePage有効化
![スクリーンショット 0003-05-14 23.44.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65278/594d024a-05a8-eea7-a532-24d11622057e.png)

劣化してしまった。NUMA用のCPUではなかったためか。NUMAアーキテクチャのThreadripperなら結果は違っていたかも。

以下、HugePage有効化手順。

```bash
vim /etc/default/grub

#GRUB_CMDLINE_LINUX_DEFAULTの行に次のような感じで書き足す
GRUB_CMDLINE_LINUX_DEFAULT="quiet hugepagez=1G default_hugepagez=1G hugepages=512 transparent_hugepage=never 〜"

#grub更新
update-grub

vim /etc/pve/qemu-server/XXX.conf

#以下追記
hugepages: 2
numa :1
```