0

Linux を実行している組み込みシステムで複数のプロセスを実行しています。各プロセスはログを対応するログ ファイルにダンプします。ログ ファイルが 20MB に達すると、ログは上から下に上書きされます。

例:

私のログには 10 行の制限があるとします。

しかし、問題は、ログ サイズが小さい場合 (たとえば 5MB)、速度が向上することです。ログのサイズが 20MB の場合は遅くなり、ファイル サイズが大きくなるほどシステムの速度が遅くなります。

誰かがその背後にある理由を説明してもらえますか?

4

2 に答える 2

2

単一行の上書きは非常に遅いです。この行以降もすべて書き直さなければならないからです。ファイルの最初の行を上書きしたい場合、ファイルの内容をすべて書き換える必要があるとします。ファイルをランダムな位置で拡大または縮小することはできないためです。これは、少なくとも一般的なファイル システムのほとんどに当てはまります。唯一の例外は、ログ ファイルのすべての行が同じ長さである場合です。その場合、ファイルを拡大または縮小する必要なく、単に上書きできます。

より良い概念は、ログのローテーションです。20MB のファイルを 1 つ持つ代わりに、10MB のファイルを 2 つ保持します。最初のファイルが制限に達したら、それを 2 番目のファイルに移動し (したがって 2 番目のファイルを捨てます)、最初のファイルを再び開始します。その後、ファイルを書き直す必要はありません。代わりに、常に現在のログに追加するだけで、通常は非常に高速です。

于 2013-08-02T07:31:02.813 に答える