web-dev-qa-db-ja.com

ZFSプールのパフォーマンス、zio_write_issue

比較的大きなZFSプールがあります(raidz3に23のvdev、〜1PB raw)。ヘッドノードには16コアと192GBのRAMがあります。プールにはZILが1つあり、L2ARCはありません。プールはsolaris11.3を実行しています

プールは、一定の1GB/sスループット、20kIOP(> 100kIOPのピーク)で動作できますが、パフォーマンスは数日で低下します。

  • iOPが低下します(zpool iostat
  • スループットが低下します
  • prstat -amLには、zio_read_intr、zio_write_issue、zio_write_issue_highがたくさんあります。

zilstat.shを調べようとすると、非常に奇妙なアクティビティが表示されません。プールに接続されたzpool statusコマンドでログデバイスを表示できる理由がわかりませんが、zilstat.shでアクティビティを表示できません。

さらに、ZILが正常に動作し、問題なく動作するシステムのほぼ正確なレプリカがあります。唯一の違いは、ZILが別のSASコネクタを介してアクセスされることです。ZILが同じSASチャネルを使用している場合、パフォーマンスが低下する可能性があると予想していました。他のvdevと同じですが、アクティビティが完全にないわけではありません。

2
Cyril

iostat -sndzxは、パフォーマンスが低い理由についての洞察を提供しました(私の元の質問に対する@Andrewのコメントを参照してください)。

プール内のディスクの1つは、平均サービス時間(asvc_t列)が150ミリ秒から4,999ミリ秒の間で変動し、ビジー時間の割合が60(%b列)であると報告しました。プール内の他のドライブは3.3msavsc_tで、2%ビジーです。

iostatによって生成された上記の数値にもかかわらず、zpool statusは、読み取りまたは書き込みエラーなしで、ドライブをonlineとして報告していました。

zilstat.shを使用してアクティビティが表示されなかったのは、その時点でのみアクティビティがzfs send/receiveであったためです。受信側で非同期書き込みを使用するsend/receiveは、ZILをまったく使用していませんでした。ブロックは回転するディスクに直接書き込まれました。

2
Cyril

zilstat.shでパフォーマンスが見られない場合は、プール内の他の23個のvdevに別のvdevとしてzilを意図したデバイスを誰かが誤って追加したかどうかを疑問に思います。

プールの現在の構成を確認するためにzpool status出力を提供できますか?プールの作成時に誰かが「ログ」の追加を見逃した場合、zilは期待どおりに動作していません。

1
Mark Farmer