この問題について関連する質問がありますが、複雑すぎて大きすぎたため、問題をNFSとローカルの問題に分割する必要があると判断しました。私はzfs-discussメーリングリストでこれについて尋ねようとしましたが、あまり成功しませんでした。
同じサーバー上のNFS / CIFSディレクトリ間の低速コピー
概要:設定方法と期待される内容
- 4つのディスクを持つZFSプールがあります。ストライプ化された2つのミラーとして構成された2TB RED(RAID 10)。Linuxでは、zfsonlinux。キャッシュまたはログデバイスはありません。
- データはミラー間で分散されます(ZFSにとって重要)
- 各ディスクは147MB /秒で並列に読み取り(raw w / dd)、合計で588MB /秒のスループットを実現します。
- 同様の4TB REDディスクのベンチマークに基づいて、各ディスクからのシーケンシャルデータの約115MB /秒の書き込み、138MB /秒の読み取り、および50MB /秒の再書き込みを期待しています。最近はどのディスクでも実行できるため、100MB /秒以上の読み取りまたは書き込みを期待しています。
- 負荷がかかってシーケンシャルデータの読み取りまたは書き込みを行っているときに、4つのディスクすべてでIO使用率が100%になると思いました。そして、そのディスクは100%の使用率で100MB /秒以上を出力します。
- このプールでは、1つのディスクで約2倍の書き込み、2倍の書き換え、4倍の読み取りパフォーマンスが得られると思いました。
- NEW同じプールのext4 zvolはZFSとほぼ同じ速度になると思いました
私が実際に得るもの
プールの読み取りパフォーマンスが思ったほど高くない
数日前のプールでのbonnie ++ベンチマーク
バージョン1.97 ------順次出力-------順次入力--ランダム- 同時実行性1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- マシンサイズK /秒%CP K /秒%CP K /秒%CP K /秒%CP K /秒%CP /秒%CP igor 63G 99 99 232132 47 118787 27 336 97 257072 22 92.7 6
1つの4TB REDドライブ上のbonnie ++は、zpoolにあります。
バージョン1.97 ------順次出力-------順次入力--ランダム- 同時実行性1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- マシンサイズK /秒%CP K /秒%CP K /秒%CP K /秒%CP K /秒%CP /秒%CP igor 63G 101 99 115288 30 49781 14 326 97 138250 13 111.6 8
これによると、読み取りと再書き込みの速度は、単一の4TB REDドライブ(2倍)の結果に基づいて適切です。ただし、予想していた読み取り速度は約550MB /秒(4TBドライブの4倍の速度)であり、少なくとも約400MB /秒を期待していました。代わりに、約260MB /秒が表示されています
以下の情報を収集しながら、ちょうど今からプールでbonnie ++。以前とまったく同じではなく、何も変更されていません。
バージョン1.97 ------順次出力-------順次入力--ランダム- 同時実行性1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- マシンサイズK /秒%CP K /秒%CP K /秒%CP K /秒%CP K /秒%CP /秒%CP igor 63G 103 99 207518 43 108810 24 342 98 302350 26 256.4 18
書き込み中のzpool iostat。私には問題ないようです。
容量操作の帯域幅 プール割り当て無料読み取り読み取り読み取り書き込み -------------------------------------------- ------ ---- ----- ----- ----- ----- プール2 1.23T 2.39T 0 1.89K 1.60K 238M ミラー631G 1.20T 0 979 1.60K 120M ata-WDC_WD20EFRX-68AX9N0_WD-WMC300004469--0 1007 1.60K 124M ata-WDC_WD20EFRX-68EUZN0_WD-WCC4MLK57MVX--0 975 0 120M ミラー631G 1.20T 0 953 0 117M ata-WDC_WD20EFRX-68AX9N0_WD-WCC1T0429536--0 1.01K 0 128M ata-WDC_WD20EFRX-68EUZN0_WD-WCC4M0VYKFCE--0 953 0 117M
書き換え中のzpool iostat。私には大丈夫だと思います。
容量操作の帯域幅 プール割り当て無料読み取り読み取り読み取り書き込み -------------------------------------------- ------ ---- ----- ----- ----- ----- プール2 1.27T 2.35T 1015 923 125M 101M ミラー651G 1.18T 505 465 62.2M 51.8M ata-WDC_WD20EFRX-68AX9N0_WD-WMC300004469--198438 24.4M 51.7M ata-WDC_WD20EFRX-68EUZN0_WD-WCC4MLK57MVX--306 384 37.8M 45.1M ミラー651G 1.18T 510 457 63.2M 49.6M ata-WDC_WD20EFRX-68AX9N0_WD-WCC1T0429536--304371 37.8M 43.3M ata-WDC_WD20EFRX-68EUZN0_WD-WCC4M0VYKFCE--206 423 25.5M 49.6M
何が起こっているのかな
読み取り中のzpool iostat
容量操作の帯域幅 プール割り当て無料読み取り読み取り読み取り書き込み -------------------------------------------- ------ ---- ----- ----- ----- ----- プール2 1.27T 2.35T 2.68K 32 339M 141K ミラー651G 1.18T 1.34K 20 169M 90.0K ata-WDC_WD20EFRX-68AX9N0_WD-WMC300004469--748 9 92.5M 96.8K ata-WDC_WD20EFRX-68EUZN0_WD-WCC4MLK57MVX--623 10 76.8M 96.8K ミラー651G 1.18T 1.34K 11 170M 50.8K ata-WDC_WD20EFRX-68AX9N0_WD-WCC1T0429536--774 5 95.7M 56.0K ata-WDC_WD20EFRX-68EUZN0_WD-WCC4M0VYKFCE--599 6 74.0M 56.0K
同じ読み取り操作中にiostat -x。IO%が100%ではないことに注意してください。
デバイス:rrqm / s wrqm / sr / sw / s rkB / s wkB / s avgrq-sz avgqu-sz await r_await w_await svctm%util sdb 0.60 0.00 661.30 6.00 83652.80 49.20 250.87 2.32 3.47 3.46 4.87 1.20 79.76 sdd 0.80 0.00 735.40 5.30 93273.20 49.20 251.98 2.60 3.51 3.51 4.15 1.20 89.04 sdf 0.50 0.00 656.70 3.80 83196.80 31.20 252.02 2.23 3.38 3.36 6.63 1.17 77.12 sda 0.70 0.00 738.30 3.30 93572.00 31.20 252.44 2.45 3.33 3.31 7.03 1.14 84.24
zpoolとテストデータセットの設定:
- 時はオフです
- 圧縮はオフです
- ashiftは0(自動検出-私の理解ではこれは問題ないということでした)
- zdbによると、ディスクはすべてashift = 12です。
- モジュール-オプションzfs zvol_threads = 32 zfs_arc_max = 17179869184
- 同期=標準
編集-2015年10月30日
さらにテストを行いました
- データセットbonnie ++ w / recordsize = 1M =書き込み226MB、読み取り392MB はるかに優れている
- データセットdd w /レコードサイズ= 1M = 260MB書き込み、392MB読み取りの方がはるかに良い
- zvol w / ext4 dd bs = 1M = 128MB書き込み、107MB読み取りなぜそんなに遅いのですか?
- データセット2が並行してプロセスを処理する=書き込み227MB、読み取り396MB
- dd direct ioは、データセットとzvolで違いはありません
レコードサイズが大きくなったので、とても満足しています。プール上のほとんどすべてのファイルは1MBをはるかに超えています。そのままにしておきます。ディスクの使用率はまだ100%になっていないため、さらに高速になる可能性はありますか。そして今、私はzvolパフォーマンスが私が(軽く)使用しているものであるため、なぜそれほどひどいのか疑問に思っています。
コメント/回答で要求された情報を提供させていただきます。私の他の質問にもたくさんの情報が投稿されています:同じサーバー上のNFS / CIFSディレクトリ間の遅いコピー
私は私が何かを理解していないだけで、これがまったく問題ではないかもしれないことを十分に承知しています。前もって感謝します。
それを明確にするために、質問は次のとおりです。なぜZFSプールが期待したほど速くないのですか?そして、おそらく他に何か問題がありますか?
dd
してどのようなパフォーマンスが得られるかを確認します。また、キャッシングによるダブルバッファリングがパフォーマンスに影響を与える可能性があるストリーミング速度に追いついているときに、直接IOを試すこともできます。FWIW、理論上の未加工4ディスク読み取りの合計の3/4は良好です。
%util
数を説明するかもしれません。