私はsyncコマンドがダーティキャッシュをディスクにフラッシュすることを知っています。free
コマンドを実行してから、コマンドを実行してやり直してsync
くださいfree
。後者のコマンドの結果は、free
前のコマンドよりも使用可能なメモリが多いことを示しています。
これは、実行時にダーティキャッシュがメモリから削除されることを意味しますかsync
?誰が私にもっと決定的な証拠を与えることができますか?
答え1
いいえ、ありません。何度も自分で確認しましたが、気にしないでください。 Linuxカーネルは、貴重なメモリを管理するのに非常にスマートです。読むディスクに書き込むときにRAMにキャッシュされたコンテンツ - Linux そしてhttp://linuxatemyram.com
答え2
これにより、カーネルはメモリからクリーンなキャッシュ、ディレクトリエントリ、および inode を削除して、そのメモリを空にすることができます。
ページキャッシュを空にします。
echo 1 > /proc/sys/vm/drop_caches
dentry と inode を解放します。
echo 2 > /proc/sys/vm/drop_caches
ページキャッシュ、ディレクトリエントリ、およびinodeを解放します。
echo 3 > /proc/sys/vm/drop_caches
これは非破壊的な操作であり、ダーティオブジェクトは解放できないため、ユーザーはまず「同期」を実行して、キャッシュされたすべてのオブジェクトが解放されたことを確認する必要があります。
答え3
そうではありません:-)。以下は喫煙銃です。
$ dd if=/dev/zero of=test bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB, 100 MiB) copied, 0.409106 s, 256 MB/s
$ sync
$ time cat test > /dev/null
real 0m0.027s
user 0m0.000s
sys 0m0.026s
データは引き続きキャッシュされ続けますsync
。ファイルを読み取るのにかかる時間を見ると、ファイルがキャッシュされていることがわかります。 (最大読み取り速度が約100 MB / sの回転ハードドライブがあります。)これをとの組み合わせとsync
比較してくださいdrop_caches
。
$ sync
$ echo 1 | sudo tee /proc/sys/vm/drop_caches
1
$ time cat test > /dev/null
real 0m1.030s
user 0m0.001s
sys 0m0.073s