TS-873で大容量ファイルを転送した際のCPU・メモリ消費

TS-873で大容量ファイルを転送した際のCPU・メモリ消費をチェックした記録

最初に

SMBとfioの計測では1GBのテストだったので
4GBメモリのTS-873でも十分キャッシュで処理できる範囲でしたが
搭載メモリ以上のファイルを転送した場合に
どういう挙動をするのか確認していきます

ハードウェア概要

QNAP TS-873-4G

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

メモリは増設せずに2GBx2の4GBのまま
使用したHDDは全てSeagate ST1000DM010 1TB 7200rpm
QTSバージョンは4.4.1.1086

Multimedia Consoleなどの追加機能アプリは全部無効
システムサービスはMicrosoftネットワークとWebサーバーのみ有効

使用したテスト用ファイルは実用速度を確認する為
0書きしたダミーファイルではなく
45GiBの単一ファイルで中身はランダムデータです

システムメモリの使用量

まずはシステムメモリの使用量を確認していきます

セットアップ直後

スマートインストールガイドを終えて再起動後、15分ほど放置した状態

ストレージプール作成後

HDD1台でストレージプールを作成した後に再起動して30分ほど放置した状態
まだボリュームは作成せず

10MBほど増えましたがほぼ変わらず

システムボリューム作成後

1つ目のボリュームが自動でシステムボリュームになります
(ボリューム名に「システム」と入る)
システム用ボリュームを作成した後に再起動して30分ほど放置した状態

システムボリュームを作成するとバックグラウンド処理が増えるので
システムメモリも100MB以上消費され、CPU使用率も上がります

2つ目のボリューム作成後

通常シックボリュームを作成した後に再起動して30分ほど放置した状態

少し増えますが差が少ないのでなんとも言えません
3つ目のボリューム作成後は903.48MBに減りましたので誤差な気がします

HDD8台 RAID5の場合

HDD8台でRAID5のストレージプールを作成し
同じようにシステムボリュームと普通のボリュームを作成
再起動後、30分放置した状態

RAID構成だと100MBほど増えるようです

まとめ

SMB用途であればシステムは約1GB程度の消費になり
多めに見積もっても1.5GB程度確保していれば大丈夫です

リソースモニターのメモリ使用率の見方

上下2種類の表示を例に説明します

パッと見ではわかりにくい表記になってますがQTSのメモリ使用率は以下の通り

使用可能メモリ合計=使用済み+空き領域
空き領域=キャッシュ+空き

つまりシンプルに言えば使用済みがシステム用でそれ以外がキャッシュ用

上下を比較して使用済みが3MBしか増えていないように見えますが
キャッシュをフルに活用した後なのがわかります

HDD1台へ転送

最初はシンプルにHDD1台のみのストレージプールを作成して
SMB経由(GbE)で45GiBの単一ファイルを転送します

HDDシーケンシャル書き込み速度>GbEの速度
ですので大容量ファイルであってもメモリは溢れないはず

通常シックボリューム

転送開始直後

転送50%時点

転送終了直前

転送終了後

まとめ

GbEで頭打ちしているのでリソースモニターでも綺麗な天井になっています
CPUはかなり余裕でメモリもキャッシュをフル活用で安定してました

暗号化シックボリューム

転送開始直後

転送50%時点

転送終了直前

転送終了後

まとめ

CPU使用率でIO待機よりシステムが高くなる所が特徴ですが
こちらもAES-NI対応機なのでCPU負荷は20%程度

ネットワーク使用率の天井張り付き具合を見ると
暗号化ボリュームの方が若干上下していて甘いですが
体感では通常ボリュームと変わらない速度・安定性があるのがわかります

HDD8台 RAID5へ転送

HDD8台でRAID5を構成したストレージプールを作成し
SMB経由(GbE)で45GiBの単一ファイルを転送します

8台RAIDでのCPU使用率と意図的にキャッシュ溢れを起こして挙動を確認したかったので
前記事のローカル速度計測結果を参考に比較的遅かった8台RAID5を使いました
更に暗号化シックボリュームにすることで処理能力を下げてます

GbEの速度>シーケンシャル書き込み速度(fio計測値)になっていますので
キャッシュ溢れが起きてもおかしくない環境での結果です

転送開始直後

転送50%時点

転送終了直前

転送終了後

まとめ

HDD1台の暗号化ボリュームのデータと比較すると
CPUシステム負荷が若干上がっているのがわかりますが
GbEで頭打ちなのもあってCPU負荷は余裕があります

fioでのテストと違ってキャッシュが有効になると
大容量でもうまく処理出来ているのか
目的だったキャッシュ溢れでの挙動は確認できませんでした

fioでの数値が低くてもGbE程度であればHDDでも問題なく処理できているというのは
実用する上ではかなり素晴らしい結果なのではないでしょうか

HDD8台 RAID5へ転送 2NIC版

HDD8台のRAID5&暗号化ボリュームよりGbEの方が遅いという結果でしたので
更に高速化するべく2NIC&2PCで同時転送することにしました

当然ながらPC1番→1番LANポート、PC2番→2番LANポートで別帯域になっています

計測前の状態
2NICだとアイドル状態でもシステムが1000MB超えました

転送開始直後

転送50%時点

転送終了直前

転送終了後

PC2番の転送状況

まとめ

2NIC同時使用でようやくNAS側がネックになりましたが
HDD8台+RAID5だとキャッシュ有効での実用は140~160MB/sぐらいで利用できるようです

CPU使用率も30%でまだまだ余裕です

PC1番の方で転送終了間際に転送速度が回復していますが
ネットワーク使用率を見てわかる通りPC2番の方が先に転送が終わっただけです

キャッシュメモリが少なくてわかりにくいですが最初の数秒だけしっかり速度が出ます
しかしすぐにキャッシュが溢れてその後はHDD本来の書き込み速度に制限されて終わります

キャッシュ分はGbEフル活用をしてその後はHDD本来の書き込み速度に制限されるという
挙動自体は想像通りではありますが
普通のHDDとメモリ4GBでもこの程度の書き込み速度が安定して使えるならば
iSCSIとかだと厳しいですが普通のファイルサーバとして使う分には必要十分ですね