GNU/Linux >> Linux の 問題 >  >> Linux

コピーで使用するキャッシュを制限して、他のキャッシュに使用できるメモリを残すにはどうすればよいですか?

nocache コマンドは、この問題に対する一般的な答えです! https://github.com/Feh/nocache を参照するか、Debian および Ubuntu 13.10 (saucy) で見つけてください。

ピーター、rsync の --drop-cache" オプションについて警告してくれてありがとう。 fadvise での rsync 作業に基づいています。

必要なコマンドの前に「nocache」を追加するだけです。また、ファイルのキャッシュ ステータスを記述および変更するための便利なユーティリティもあります。例えば。 nocache を使用した場合と使用しない場合の効果は次のとおりです:

$ ./cachestats ~/file.mp3
pages in cache: 154/1945 (7.9%)  [filesize=7776.2K, pagesize=4K]
$ ./nocache cp ~/file.mp3 /tmp
$ ./cachestats ~/file.mp3
pages in cache: 154/1945 (7.9%)  [filesize=7776.2K, pagesize=4K]\
$ cp ~/file.mp3 /tmp
$ ./cachestats ~/file.mp3
pages in cache: 1945/1945 (100.0%)  [filesize=7776.2K, pagesize=4K]

したがって、他のバックアップ プログラム (rsnapshot、duplicity、rdiff-backup、amanda、s3sync、s3ql、tar など) や、キャッシュを破棄したくないその他のコマンドでも機能することを願っています。


Kristof Provost は非常に近かったのですが、私の状況では、dd を使用したり、独自のソフトウェアを作成したりしたくありませんでした。そのため、解決策は rsync で「--drop-cache」オプションを使用することでした。

この質問を作成して以来、これを何度も使用しており、問題を完全に解決しているようです。 1 つの例外は、「--drop-cache」をサポートしていない FreeBSD マシンからコピーするために rsync を使用している場合です。そこで、/usr/local/bin/rsync コマンドを置き換えるラッパーを作成し、そのオプションを削除したところ、そこからのコピーも機能するようになりました。

依然としてバッファに大量のメモリを使用し、ほとんどキャッシュを保持していないように見えますが、とにかくスムーズに動作します.

$ free
             total       used       free     shared    buffers     cached
Mem:      24731544   24531576     199968          0   15349680     850624
-/+ buffers/cache:    8331272   16400272
Swap:      4194300     602648    3591652

カーネルは、キャッシュされたデータを再度コピーして使用しないことを知ることができません。これはあなたの情報優位性です。

ただし、swappiness を 0 に設定することもできます:sudo sysctl vm.swappiness=0.これにより、Linux は、ライブラリなどがスワップに書き込まれる前にキャッシュをドロップします。

特にヒューラム (16 ~ 32 GB) と組み合わせると非常にパフォーマンスが高くなります。


Linux
  1. Linuxでメモリキャッシュをクリアする方法

  2. Linux:デバイスに使用されているデバイスドライバーを見つける方法は?

  3. Nouveau Xorgドライバーをマルチヘッドワークステーションに使用できますか?

  1. CentOS / RHEL 6 :cgroups を使用して特定のユーザーのメモリ リソースを制限する方法

  2. CentOS / RHEL :スワップ パーティションに使用するデバイスの優先順位を付ける方法

  3. bash でディスク上で利用可能なバイト数のみを取得するにはどうすればよいですか?

  1. 「ps -ef」を実行した場合、各プロセスのメモリ使用量を表示するにはどうすればよいですか?

  2. systemd によって管理されるサービスのメモリを制限する方法

  3. ARM ベースのシステムで RAM のデータ破損をテストするにはどうすればよいですか?