0

これをどのカテゴリに入れるか正確にはわかりません。

システムCentos 5.5で7.7GBのファイルを使用して次のことを試みました

time cp original copy

time cp copy copy2

コピーのコピーは、オリジナルのコピーの約半分の時間です。

OSがキャッシュしているか何かだと思ったので、別のディレクトリに移動していくつかの小さなファイルなどをコピーし、戻ってコピーのコピーを再度作成しましたが、それでもはるかに高速でした.

ここで何が起こっているのですか?OSはファイルをキャッシュしていますか?

この問題に気付いたのは、このファイルを処理するコードがあることです。2 つのファイルでテストしたかったので、コピーを作成しました。その後、元のファイルの処理に最も時間がかかることに気付きました。これに対してどのような診断を実行できますか?

4

2 に答える 2

1

OS はファイルをキャッシュするのではなく、読み取ったディスク ブロックをキャッシュします。

タイミング テストを実行するときにキャッシュを試して説明するには、いくつかの方法があります。大量のメモリを割り当てることで、OS ディスク バッファをフラッシュすることができます (私は通常、perl -e '"\0"x1024x1024x1024'このようなことを実行します)。 freebefore と after から、OS がキャッシュしたデータの量がわかります (buffersとのcached列の下)。

または、実行時間を計測するときは、システム時間を無視して (主に I/O になります)、ユーザー時間だけを監視します。もちろん、異なる実行では異なる量のデータを適切に処理できるため、異なる量の I/O が存在することが予想されます。

最も確実な方法は、テストを数回実行し、最速の時間を比較する値として使用することです。

于 2011-08-19T18:52:45.457 に答える
0
sync && echo 3 > /proc/sys/vm/drop_caches
time cp original copy
sync && echo 3 > /proc/sys/vm/drop_caches
time cp copy copy2
于 2011-08-19T19:30:06.170 に答える