TS-873でVirtualization Stationの各キャッシュモードを確認

TS-873でVirtualization Stationの各キャッシュモードを確認した記録

最初に

QNAP TS-873-4G
メモリを64GB化済

Amazon | QNAP(キューナップ) TS-873 クアッドコア2.1 GHz CPU 4GBメモリ 8ベイ DTCP-IP/DLNA対応
https://amzn.to/34uq7oC

この記事ではVirtualization StationのVM設定で
ストレージ -> キャッシュモードの選択肢である
「None」「Writeback」「Writethrough」「Force Writeback」
4種類のモードを実際に試してみました

各キャッシュモードについて

QNAPサイト上での説明

[ライトバック] はNASページキャッシュを使用しています。NASキャッシュの容量がいっぱいになると、ディスクにすべてのキャッシュデータがライトバックされます。[ライトスルー] と比べると、[ライトバック] は転送速度に優れています。ただし、[ライトスルー] のほうが安全です。書き込みキャッシュを使用してディスクに直接データを書き込み、予想外のイベントが発生した場合にデータの損失を回避します。[なし] を選択すると、NASキャッシュが回避され、転送率の性能は [ライトバック] と [ライトスルー] の中間になります。

この解説が作られたときは「Force Writeback」が登場する前だったので触れられてませんが
速度は「Writeback」>「None」>「Writethrough」
安全性は「Writethrough」>「None」≒「Writeback」という感じです

「Writeback」と「Writethrough」についてはRAIDカードでもよく使うので
RAIDカード方面で調べると資料がいろいろあると思います

「Writethrough」はメモリ上でしか書き込みデータがない状態で電源が落ちると
VMイメージファイルの破損に繋がる恐れがあるのでUPS環境推奨になります

実際にVMで検証

HDD(ST1000DM010)2台でRAID1構成
ストレージプール作成し非暗号化シックボリューム内に配置
HDDインターフェイスはVirtIO

アイドル状態におけるCPU使用率について

画像内でアイドル状態におけるCPU使用率が10%前後になっている現象について
先に触れておきます

WindowsVMを起動 -> CDM起動 -> 放置して処理が落ち着くのを待つ ->
落ち着いたらCDM計測開始 -> シャットダウン
という流れで検証を行いました

その中でCDMを起動すると計測してなくても起動しているだけで
何故かNAS側のCPU使用率が上がり
CDMを終了するとNAS側のCPU使用率も落ち着くといった現象が発生
VMのWindows上ではタスクマネージャーでもCPU使用率は上がっておらず理由は不明

前記事ではCDM起動してすぐ計測していたので気付いていませんでした

None

CrystalDiskMark v7.0.0fの結果(前記事と同じ画像です)

CPU使用率とメモリ使用率

VM起動前

CDM計測直前

CDM計測後(IO待機が上がっている部分が計測中)

VMシャットダウン後

まとめ

計測中でもメモリ使用率・キャッシュ容量に変動がないので
NAS側としてはキャッシュなどメモリを使用せず
直で読み書きしているのがわかります

使用しているHDD・SSDやRAID構成に速度が素直に左右されるせいか
NASローカル計測記事のように計測毎で結果が結構バラつきがある点に注意が必要
(シーケンシャルで50MB/s程度の誤差あり)

VM割り当てメモリ容量以外はメモリを消費しないので
搭載メモリが少ないNASでもSMBサービスなどに影響しにくく
VMシャットダウン後も綺麗にリソースが戻るので
Noneで満足な速度が出る環境であればこれがベストと思います

Writeback

CrystalDiskMark v7.0.0fの結果

CPU使用率とメモリ使用率

最初の2画像が直前の別VM分も映っていて紛らわしくてすいません

VM起動前

CDM計測直前(左のIO待機の山は関係ありません)

CDM計測後
計測開始ポイントは左のシステムグラフが上がっているところ
メモリ使用率もキャッシュグラフが上がっています

VMシャットダウン後

まとめ

Noneと違ってVM起動前からCDM計測直前までの間(OS起動の読み書き)だけで
キャッシュ値が400MBから2.6GBまで増加します

CDM計測設定が1GB計測なのでCDM計測後に更に1GBのキャッシュ増加も確認できます
もちろんキャッシュ枠なのでVMシャットダウン後もすぐには解放はされません

VM割り当て分+キャッシュ領域が必要でメモリ消費量は多く
キャッシュ領域が不足していれば逆効果になる場合もありますが
メモリをフル活用する分、データがヒットすればかなりスピードは向上します

当然ながら仕組み上、メモリにないデータには効果はありません

CDM計測中でも実際のIOまでにラグがあるので結果的にIO待機のピーク値が低く済んでいて
NAS側のメモリ量に余裕があって遅いHDDをブーストしたい時には選択肢になるでしょう

ただ停電時などにデータ損失・VM丸ごと破損のリスクが高いので
UPSやバックアップしながらの運用が必要になります

Writethrough

CrystalDiskMark v7.0.0fの結果

CPU使用率とメモリ使用率

VM起動前

CDM計測直前

CDM計測後

VMシャットダウン後

まとめ

書き込みをすぐ確実に処理する仕組み上、書き込み速度はかなり遅いですが
Noneと違ってキャッシュ領域は使用するので書き込んだデータもキャッシュに残ります
なのでCDMのようにテストデータを作ってすぐ利用するような用途ではかなり有効です

CDM計測後の画像を見てもIO待機を見ればCDMの動きがよくわかり
最初のIO待機が読み込みテスト用のテストデータ生成
後ろの4つ連続するIO待機が各書き込み計測中になります

NAS側のメモリ量に余裕があって読み込みデータが多いWEBサーバなどのVM向け

Force Writeback

キャッシュモードを変更しようとするとForce Writebackのみ警告が表示されます

CrystalDiskMark v7.0.0fの結果

CPU使用率とメモリ使用率

VM起動前

CDM計測直前

CDM計測後

VMシャットダウン後

まとめ

Force Writebackは2019年1月に追加されたばかりの機能ということもあり
資料がなく安定性やリスクについての情報が見当たらず判断が難しいですが
パフォーマンス最優先というだけあってWritebackより高速なので
せっかくリスクを許容するならWritebackよりこっちでもいい気がします

最後に

CrystalDiskMarkではかなり高速化してますが
全てのデータが高速化するわけではなく
これらはあくまでキャッシュデータだけが高速化する話ですので
それ以外のデータは全てストレージプールの構成内容によって上限速度が決まります

速度を求めるVMであれば根本をSSD化することをまず考えましょう

QNAP機の場合はSMBはもちろんのこと、いろんなアプリでメモリを使うでしょうから
キャッシュ領域が不足すると他のアプリに影響するのでその点もお忘れなく

キャッシュ領域はNAS再起動はもちろんQboostでいつでも解放できます

VM用途によって効果は全然違いますしこの設定はすぐに変更できますので
まずはお試しあれ