web-dev-qa-db-ja.com

FreeBSDZFSでの読み取りと書き込みの速度が遅い

現在6x 3 TB Seagateドライブ、12 GB DDR3 RAMおよびCorei3 540で構成されている私のホームストレージサーバーは、読み取り時のパフォーマンスが非常に低くなります私が設定したraidz2からまたは書き込みます。

/usr/bin/time -h dd if=/dev/zero of=sometestfile bs=1024 count=10の使用:

10240 bytes transferred in 0.000221 secs (46331902 bytes/sec)

およびその逆:

10240 bytes transferred in 0.000107 secs (95656287 bytes/sec)

これは、46 MB/sの書き込み速度と95MB/sの読み取り速度に相当します。これはちょっと遅いようです。それともこれは完全に正常ですか?

ありがとう

トビアス・ティンペ

3
Tobias Timpe

上記のコマンドでは、ディスクの書き込みパフォーマンスをテストしていません。さまざまな要因をテストしていますが、ほとんどはコントローラーとディスクのレイテンシーです。ディスク読み取りのパフォーマンスをテストするには、フープを飛び越えてディスクキャッシュをテストから除外する必要があります。これは、ARCキャッシュを無効にすることを意味するため、ZFSでは重要です。書き込みパフォーマンスのテストははるかに簡単です。はるかに大きなファイル、できればシステムの組み込みRAMを超えるサイズを書き込みます。

自宅のZFSファイルサーバー(ミラーリングされたWDCWD80を搭載したCorei3-4130T)でこのコマンドを実行しました。

# /usr/bin/time -h dd if=/dev/zero of=sometestfile bs=1024 count=10000000
10240000000 bytes transferred in 55 secs (186900359 bytes/sec)

それは素晴らしいことではありませんが、それは実際の書き込みパフォーマンスのはるかに優れたテストです。興味深い結果は、187MB/sを達成し、ディスクの定格パフォーマンスは178MB/sであるということです。これは少し奇妙なことですが、典​​型的なベンチマークは定格パフォーマンスのかなりの部分です。それを超えることは、ZFSのディスク圧縮によって説明できます。

私のディスクはZFSミラー内にありますが(2倍の読み取りパフォーマンスはストレージ効率よりも便利です)、ディスクも5400 RPMであると仮定すると、同等の書き込みパフォーマンスが期待できます。

ddを使用したはるかに大きなカウントでも優れたテストではない理由を確認するには、次を確認してください。

# /usr/bin/time -h dd if=/dev/zero of=sometestfile bs=1M count=1000000
1048576000000 bytes transferred in 223.56 secs (4690377542 bytes/sec)

ブロックサイズを1Mに増やすだけで、私のディスクパフォ​​ーマンスは驚くべきものになりました。/dev/zeroからの読み取りは、データソースにエントロピーがなく、高度に圧縮可能であることを意味することに気付くまで。 ddは、ディスクのパフォーマンスをテストするための最適なツールではありません。

FreeBSDポートツリーには他のツールがあり(私は過去にbonnieとiozoneを使用しました)、ディスクのパフォーマンスに関する詳細情報を教えてくれます。あなたが本当に興味があるなら、それらを調べてください。それ以外の場合、ホームファイルサーバーのはるかに優れたパフォーマンステストは、DVDまたはブルーレイのコンテンツを2つのディスク間でコピーし、そのコピーの時間を計ることです。

4
Matt Simerson