0

書き込みが発生するたびに、その書き込みで fsync が使用される状況があります。では、ディスク アクセスを最小限に抑えるにはどうすればよいでしょうか。カーネルはどのようにこれを行いますか?

fsync() は、ファイル記述子 fd によって参照されるファイルのすべての変更されたコア内データ (つまり、変更されたバッファ キャッシュ ページ) をディスク デバイス (または他の永続的なストレージ デバイス) に転送 (「フラッシュ」) します。

カーネルは、変更されたすべてのバッファのデータを、しばらくすると定期的にハードディスクに転送できると思います。これにより、ディスク アクセスを最小限に抑えることができます。

いくつかの提案/ヒントを教えてください。

4

1 に答える 1

0

一般的に、それを考えすぎないようにしてください。fsyncを呼び出さないでください。物理的な書き込みを行うタイミングを、カーネルに決定させてください。

ext4のカーネルオプションは次のとおりです。これを使用して、カーネルの動作をニーズに合わせて調整できます。ただし、これは、アプリケーションから実装できるものではなく、サーバー調整の演習になります。http: //kernel.org/doc/Documentation/ filesystems / ext4.txt

これは興味深いものかもしれません:「max_batch_time=usecext4が追加のファイルシステム操作が同期書き込み操作と一緒にバッチ処理されるのを待つ必要がある最大時間。」

于 2012-05-24T21:02:03.420 に答える