ディスクへの書き込み速度を開始後に調べる
Live With Linux::practical
- TOP
- Articles
- Live With Linux
- ディスクへの書き込み速度を開始後に調べる
序
HDDはファイルシステムが汚れていなければシーケンシャルライトはほぼ一定の速度になるが、SSDへの書き込みはかなり変動があり、場合によっては完全にストールしてしまうこともある。
Nemoでのファイル移動や、rsyncで--info=progress2
オプションをつけたりすれば転送速度を確認することができるが、mv
を使った場合や、確認できない手段で開始してしまったらこうした方法は使えない。
今回はSanDisk SSD UltraからPNY
CS2241へのmv
でのファイル移動がものすごく遅く感じたので、ちゃんと書けているか確認したいと考えた。
確認する
#!/bin/zsh
typeset -i cv=$(df . | { read; tr -s ' ' } | cut -d " " -f 3)
typeset -i nv=0
typeset -i dv=0
while sleep 600
do
nv=$(df . | { read; tr -s ' ' } | cut -d " " -f 3)
(( dv = nv - cv ))
print wrote $(( dv / 1000 )) Mblocks
print $(( dv * 8 / 10 / 60 )) kB/s
(( cv = nv ))
done
df
を使って現在のファイルシステムのデータ量を定期的にチェックすることで、データ増加量=書き込み量を確認し、時間で割ることで書き込み速度を割り出している。
このスクリプトでは10分周期。
注意点
- これを実行すると、そのたびにディスクを読みにいくため、書き込み速度が落ちる
- これは転送速度ではなく「ディスクに書かれたデータの量」である
で、PNY CS2241の速度は?
だいたい50〜70MB/s。
これは、完全に止まってしまうようなSSDと比べればマシだが、PCIe NVMeのディスクとしては非常に悪く、HDDよりも遅く、もちろんSanDisk Ultraのシーケンシャルリードよりも遅い。
ものすごく安かったので人柱覚悟で購入してみたが、結論としてはやっぱり実績がある製品を買うべき、という結論となった。
ただ、挙動からすると熱っぽい感じでもあるため、冷却次第ではもうちょっと性能出るかもしれない。
なお、データを戻すとき、つまりシーケンシャルリードに関しては(rsync計測で)400MB/s以上出ているが、書き込み先はRAID0のSATA SSDで、他のPCIe NVMe SSDからの書き込みでは安定して750MB/s以上が出ているため、400MB/sがシーケンシャルリードの現実的性能だと思われる。
正直、SATA SSD未満といった感じ。