ext4を使用しているシステムでI / Oレイテンシの問題をデバッグしようとしていますが、ロギングをよく理解していないため、少し混乱しています。
私が特に知りたいのは、ディスクブロックが実際にログに書き込まれ、「実際に」書き込まれる時点です。これまでのところ、私の前提は、ユーザーrename()
プロセスがいくつかのメタデータ操作を完了することです(たとえば、変更されたページを記録するjbd2トランザクションも作成し、後でそのページをログに記録し、完了したときにのみログに記録します)。任意の後の時点で正しいファイルシステムに書き込みます。ここのどこかに間違っていたら訂正してください。
私の言葉がある程度正しいと仮定すると、何がログに書き込みを引き起こす可能性があるかを知りたいです。カーネルのより一般的なFS / VM部分がダーティページをフラッシュする時間であると判断したときですか?トランザクションを割り当てることができるログスペースがなくなったときですか?カーネルがバッファキャッシュからいくつかのダーティページを回収しなければならない場合はどうなりますか?これにより、ログ書き込みと基本書き込みが継続的にトリガされますか?
そして標準用語は何ですか? 「Committed」というトランザクションが表示されたら、より正確にはどういう意味ですか?