QNAPのSSDキャッシュは設定を間違えると無益どころか有害に

シェアする

Voiced by Amazon Polly

家庭内で使用しているNASの話。
Sambaを使用して大容量のファイルの転送中、遅くなったり早くなったりを繰り返し、場合によっては0バイト/秒で転送が停止してしまうQNAPのNAS。
今回大容量のファイルを保存する必要がある用事があったため、さすがに我慢できずに原因を調べていたら問題を特定できました。

広告



SSDキャッシュを使えば高速化されるはずだが


QNAP製NASには、SSDをキャッシュとして使用することで読み書きを高速化する機能があります。
これを使用すると、一部のアクセスにSSDが使われるため高速化や省電力化を期待することができるはずでした。

SSDへのアクセスが遅延を生じさせ、足を引っ張った

画像をクリックすると拡大します。

今回の事例では、このSSDキャッシュが足を引っ張っていました。本来高速なはずのSSDで大きな遅延が生じていることをリソースモニターにより視認しました。なお、このNASではSSDをディスク4に挿入しています。
HDDで100ミリ秒程度の遅延の中、SSDが3000ミリ秒を超える遅延を発生させている状態でした。

SSDキャッシュの使用をランダムアクセスに限定する

容量が480GBと大きめのSSDを搭載していたことで、すべてのアクセスをSSD経由にすることでの高速化を試みていました。こうすることで、頻繁にアクセスされるファイルは大きなものでも高速に読み出すことができるだろうという算段でした。
しかし、現実は違いました。結果としてSSDに過度のアクセスが集中することで、すべてのI/O要求においてSSDが足を引っ張る状態となり逆効果でした。
これを回避するには、Bypass Block Sizeを設定します。これがNoneの設定である場合、すべてのI/O要求をSSDがキャッシュしますが、一方ですべてのI/O要求がSSDに集中することになり、結果としてSSDキャッシュのない状態よりパフォーマンスの低下を招く状態になっていました。

デフォルト値は1MBです。この設定では、1回1MBを超えるシーケンシャルアクセスに関してはSSDにキャッシュしないようになります。こうすることで、SSDへの過度な負荷を避け、ランダムアクセスを高速化することが可能です。

容量に余裕があるからといって、無駄にSSDキャッシュを使う行為は考えものです。
(キャッシュヒット率は低下しましたが、一方で転送速度に関しては安定しました)

たぶん…

SSDの数を増やしてRAIDを組めればさらなる高速化を試みることができると思われますが、容量単価が上がることと、ベイ数の多いNASはより高額になる懸念があります。
また、SSDの本数を増やすほど高速化は望めますが、SSDの容量単価はHDDのそれに及ばないためコストパフォーマンスが悪化していきます。場合によってはすべてをSSDにしたほうがパフォーマンス面でのコストパフォーマンスが良くなる場合もあります。
今回の事象は家庭用の4ベイNAS(TS-431+)において、1台だけSSDを搭載した状態で発生したものです。複数台のSSDを積んだ場合は、もしかすると事象が軽減されるか、効果を発揮するかもしれません。