ベンチマーク」タグアーカイブ

ProxmoxでZFS ARCの利用上限を設定

ZFSではL1ARCでRAMの50%をデフォルトで使用する。他の用途で優先的に使われ、影響はないとのことだが、Proxmox GUIの表示上、気になるので設定する。

起動直後にAでRAM使用率が50%にスパイクしていることがわかる。BとCはVMを2台起動した挙動。Ballooningが効いている。

現状ステータス確認

“c_max”列に表示される。16GBの場合、”8589934592″がデフォルト値。

nano /proc/spl/kstat/zfs/arcstats

上限設定

以下のサイトによると、システムで2GB、ZFSプール1TBに1GB必要とのこと。今回5GBにしてみる。本番環境では、FreeNASのように8GB以上にしたほうがいいかもしれない。

echo 5368709120 > /sys/module/zfs/parameters/zfs_arc_max
# 再起動後も永続させる
echo 'options zfs zfs_arc_max=5368709120' > /etc/modprobe.d/zfs.conf

結果確認

参考サイト

ARC(メモリキャッシュ)の設定

https://qiita.com/juze9/items/563b67b9f2d67d1fa270

“ZFS uses 50 % of the host memory for the Adaptive Replacement Cache (ARC) by default. Allocating enough memory for the ARC is crucial for IO performance, so reduce it with caution. As a general rule of thumb, allocate at least 2 GiB Base + 1 GiB/TiB-Storage. For example, if you have a pool with 8 TiB of available storage space then you should use 10 GiB of memory for the ARC.”

https://pve.proxmox.com/pve-docs/chapter-sysadmin.html#sysadmin_zfs_limit_memory_usage

“ZFS will also use available memory as a read cache. I’m not sure of the exact defaults, but its max is usually set somewhere around half the total memory available. All of those things are opportunistic. They’ll use whatever memory they think they might need if it’s available, but will release it other things need it more.”

https://www.reddit.com/r/Proxmox/comments/qlav4j/high_memory_usage_with_one_vm_running/

ProxmoでZFS RAIDZ1のベンチマーク

ProxmoxでSSD*3のZFS RAIDZ1のベンチマークをとる。RAMキャッシュが効いているため、5~10倍くらいの速度になっているが、目安として記録。

UnsafeはVM強制停止すると、NTFSのエラーチェックが走ることがある。Proxmox公式が推奨している、Write Backに帯域リミッターを組み合わせるのが良いかもしれない。

キャッシュなし(既定)

Write back(Unsafe)

Write back

Azure Application Proxyのネットワーク実測テスト

DockerでLibreSpeedという計測サーバを構築し、AAP経由でスピードテストする。

https://librespeed.org/

内部LAN接続でテスト

1GbEの速度が出ている。

エンタープライズアプリの追加

ADのDNSレコードに追加した、内部ホスト名で登録する。IPアドレスは登録できない。

結果確認

1回目

2回目

3回目

まとめ

QoSが効いているようで、およそ50Mbp前後に収束する。Pingは30ms。IPはKDDIのバックボーンが表示された。

Windows Server CoreとGUIのフットプリントの違い

実測したことがなかったので、PowerShellで取得する。Server CoreはバニラVM、GUIはAD/AADCがインストールしてある状態。

ディスク使用量(GUI)

Get-FolderSize C:\
# シェル確認用
Get-Volume | Where {$_.DriveLetter -ne $null } | Ft
# CSV出力用
Get-Volume | Where {$_.DriveLetter -ne $null } | Select DriveLetter,FileSystemType,Size,SizeRemaining | Export-Csv -Path <出力パス> -Encoding UTF8 -NoTypeInformation

デフォルトでGB表記になっているので、シェル確認ではそのまま使う。

Select-ObjectするとByte表示になり、”GB”の文字列も消えるので、PowerBIで集計する場合は、こちらのほうが都合がよい。

ディスク使用量(Server Core)

メモリ使用量

PBSにはメモリ8GBは必要

パフォーマンスについて。Proxmox Backup Serverはメモリが足りないと、リストア時間に非常に時間がかかる。

4GBでは常時メモリがフル状態。

リストアするVMの実容量は15GB程度。

33%まで5分ほどかかり、それ以降は急速に進んだ。PBSのメモリが足りないため、解凍処理で時間がかかっている可能性がある。

CPUはそれほど使わない様子。PBSはメモリが重要だと分かった。

Proxmoxでディスクベンチマーク

VMに仮想ディスクアサインする前の、基盤ディスクベンチマーク。ZFSのパフォーマンステストなどで使うと良い。

コマンド

apt install hdparm
hdparm -tT /dev/sda

キャッシュメモリが効いていることが分かる。速度はSATA6の仕様値。

実用スクリプト

以下のサイトを参考にし、Read/Writeの複数回テストができた。

# Read
for i in [1] [2] [3] [4] [5];do sleep 5;echo $'\n\n' $i;hdparm -t /dev/sda;done
# Write
for i in [1] [2] [3] [4] [5];do sleep 5;echo $'\n\n' $i;date;time dd if=/dev/zero of=/tmp/hdparm_write$i.tmp ibs=1M obs=1M count=1024;date;done

参考サイト

Apache Guacamole パフォーマンステスト

前回のエントリでDockerにデプロイしたGuacamoleの検証をする。

接続確認

ポートを80にしたので、ホスト名入力だけで接続できる。guacadmin/guacadminでログイン。

VMにネイティブインストールする場合と違い、最初から日本語化されていた。

Windows VMへの接続作成

同時接続制限など、新しい項目が追加されていた。GPOで制限するよりも手軽かもしれない。

NLA認証をAnyにして接続。デフォルトだと最軽量の設定。

動作テスト

負荷テストのため、リッチグラフィックの設定にしてみる。

カラー深度とスケーリングの設定も変更。

動画再生は15fps程度。メディアファイルはローカル処理させたほうが良い。

動画再生すると、GuacamoleホストCPU使用率が20%を超えた。メモリは変化なし。

ブラウザのサイズを変えると、解像度もリニアスケールする。

ProxmoxでSANネットワークを追加する② ~ベンチマーク編~

仮想SANブリッジは内部10Gbpsだが、実測値を測ってみる。

iPerfをダウンロードして展開

バージョンは最新を確認する

New-Item C:\IPerf -ItemType Directory
Wget https://iperf.fr/download/windows/iperf-3.1.3-win64.zip -OutFile C:\IPerf\IPerf.zip
Expand-Archive -Path C:\IPerf\IPerf.zip -DestinationPath C:\IPerf
Rename-Item C:\Iperf\iperf-3.1.3-win64 Exe

サーバーモード実行

VM1で待ち受け開始する。レガシーアプリのため、PowerShellではなくCMDで実行したほうが無難。

C:\IPerf\Exe\IPerf3.exe -s

クライアントから計測

VM2から速度テストする。-cが大文字だと動かないので注意。

C:\IPerf\Exe\IPerf3.exe -c 10.1.50.11

Hyper-V -> ProxmoxのネストVMのためパフォーマンスは落ちているが、最大10Gbpsの帯域と確認。

その他

iPerfAutomateというモジュールをインストールすればPowerShellで動くが、PSRemotingで実行すると以下のエラー。

Install-Module iPerfAutomate
Get-Command -Module iPerfAutomate
Start-iPerfMonitorTest -FromServerName ad1 -ToServerName rdsh01

これだとC:にファイル展開しないで済むが、SANのIPを指定できなかった。場面によって使い分けたい。

ProxmoxでZFS RAID10とRAIDZ1の検証② ~ベンチマーク編~

前回の続き。SSD*4でストライピングミラーを作り、HDD*5でRAIDZ1(RAID5相当)を作ってみる。

ベンチマーク結果

New-VHDコマンドで-FixedにしたところHDDはQoSが有効になった。SSDは期待値の1000MB/sを超過。そしてWriteが200MB/sで頭打ち。QoS ≠ Bandwidth Limiterなのでいずれ物理ディスクで再テストして正確な結果を得たい。

100MB/s HDD*5 RAID-Z1
500MB/s SSD*4 RAID-10

ミラー高速パリティのSSD層を4枚で作る ③ベンチマーク編

前回の続き。記憶域スペースのミラー高速パリティでは、一般的にSSD Tierが2枚・HDD Tierは3枚~という構成だが、SSD4枚のミラー(NumberOfColumns=2)でやった場合どうなるか、仮想ディスクでテストする。

Hyper-VのVMリスト確認

Get-VM WS* | Sort-Object Name -Descending
Windows Serverを意味するWSという名前で検索

VHDXをVMにアタッチ

SAS扱いなのでVM起動中でもOK。

Add-VMHardDiskDrive -VMName "ws2022-vm" -Path D:\VHDX\SSD1.vhdx
Add-VMHardDiskDrive -VMName "ws2022-vm" -Path D:\VHDX\SSD2.vhdx
Add-VMHardDiskDrive -VMName "ws2022-vm" -Path D:\VHDX\SSD3.vhdx
Add-VMHardDiskDrive -VMName "ws2022-vm" -Path D:\VHDX\SSD4.vhdx
Add-VMHardDiskDrive -VMName "ws2022-vm" -Path D:\VHDX\HDD1.vhdx
Add-VMHardDiskDrive -VMName "ws2022-vm" -Path D:\VHDX\HDD2.vhdx
Add-VMHardDiskDrive -VMName "ws2022-vm" -Path D:\VHDX\HDD3.vhdx

ストレージQoSを設定

VHDXファイルごとに速度制限をかける(理由は前回エントリの通り)。

IOPSとMB/sの変換はこのツールで可能。Hyper-Vは8KB基準とのこと。ProxmoxはMB/sで指定できるので不要。
https://wintelguy.com/iops-mbs-gbday-calc.pl

単体VHDXベンチマーク結果

仮想SSDのベンチ結果
仮想HDDのベンチ結果

ランダムがSSD並に早いが、QoSはあくまで上限を決めているだけだからか。VHDX全台に設定して記憶域スペースを再構築する。

メディアタイプ修正

VMにマウントしたVHDXはメディアタイプがUnspecifiedになるので修正。Proxmoxでも同様。

Get-PhysicalDisk -CanPool $True | Where-Object {$_.Size -EQ 1TB } | Set-PhysicalDisk -MediaType HDD
Get-PhysicalDisk -CanPool $True | Where-Object {$_.Size -EQ 512GB } | Set-PhysicalDisk -MediaType SSD

ミラー高速パリティボリューム作成

$VolumeName = 'TestVolume'
New-Volume -StoragePoolFriendlyName $StoragePoolName -FriendlyName $VolumeName -StorageTierFriendlyNames $PerformanceTier.FriendlyName, $CapacityTier.FriendlyName -StorageTierSizes 700GB, 1400GB -FileSystem NTFS -AccessPath "R:" -ProvisioningType Fixed -AllocationUnitSize 4KB

前回との違いはNTFSにした点。ReFS on NTFSはパフォーマンスが落ちるとのこと。

ベンチマーク結果

リードは2倍が出ておりNumberOfColumns =2にした想定通り。ライトはHDD*3のパリティの速度で遅い。次回は障害テストをしてみる。