web-dev-qa-db-ja.com

メモリキャッシュを消去または無効にするにはどうすればよいですか?

システムの起動後、数分でメモリキャッシュがいっぱいになり、スワップの使用が開始されます。/proc/meminfoのスクリーンショットを次に示します。

memory

ただし、このプロセスを無効にしたり、その後一度キャッシュを消去したりできる場合、システムの速度はある程度向上すると思います。ここで間違っている場合は修正してください。

Bleachbitメモリクリーニングも試しましたが、メモリキャッシュを適切にクリーニングしていないようです。また、この機能はまだ実験段階です。

bleachbit memory

既に同様の質問が投稿されています: プリフェッチキャッシュを無効にするにはどうすればよいですか? 、それはUbuntu Serverに関するものであり、回答には手動設定なども含まれていました。

したがって、Ubuntu 12.04のメモリキャッシュを無効/有効にするソフトウェアがあるかどうかを知りたいと思います。

49

注:LinuxはRAMを「食べていない」!以下のGeirhaの excellent answer を見て、理由を理解してください...

上記の注意の後、まだキャッシュの「クリーニング」が役立つと感じたら、あなたは確かに試すことができます:それはターミナルからのワンライナーです:

sync && echo 3 | Sudo tee /proc/sys/vm/drop_caches

disableに簡単な方法はありませんが、every minutesと同じ頻度でキャッシュを消去することで同じ効果を実現できます。

  • cron-jobにしてください
  • Alt-F2を押し、gksudo gedit /etc/crontabと入力して、この行を下部近くに追加します。

    */15 * * * * root sync && echo 3 > /proc/sys/vm/drop_caches

  • これは15分ごとにクリーニングします。 1分または5分に設定できます本当にしたい場合最初のパラメーターを*ではなく*/5または*/15に変更することにより

キャッシュを除く、実際の空きRAMを知るための1つのライナー

Geirhaの答えは詳細を説明していますが、要するに、次のようにして空きメガバイト数を取得できます。

free -m | sed -n -e '3p' | grep -Po "\d+$"

私の2GBコマンドラインサーバーでは、非常に健全な1835を返します。

59
ish

助けて! LinuxはRAMを食べました!

www.linuxatemyram.com は、これをFAQ形式で美しく説明しています。

どうしたの?

Linuxはディスクキャッシュのために未使用のメモリを借りています。これにより、メモリ不足のように見えますが、そうではありません!すべて順調!

なぜこれをしているのですか?

ディスクキャッシングにより、システムがはるかに高速になります。混乱を招く初心者を除き、欠点はありません。アプリケーションからメモリを奪うことはありません。

さらにアプリケーションを実行したい場合はどうすればよいですか?

アプリケーションがより多くのメモリを必要とする場合、ディスクキャッシュが借用したチャンクを取り戻すだけです。ディスクキャッシュはいつでもすぐにアプリケーションに戻すことができます!あなたはラムが少なくありません!

私が実際に持っている空きRAMの量を確認するにはどうすればよいですか?

アプリケーションがスワップなしで使用できるRAMの量を確認するには、free -mを実行し、「available」列を確認します。

 $ free -m 
使用済みの無料の共有バフ/キャッシュの合計使用可能
 Mem:1504 1491 13 0 855 792
スワップ:2047 6 2041 
これはメビバイト単位の答えです。

出典:前述のとおり、優れた www.linuxatemyram.com -詳細については、アクセスしてください。

45
geirha

現在のメモリ使用量を確認するには

 watch -n 1 free -m

または

 watch -n 1 cat /proc/meminfo

スペースを空けるため

 Sudo sysctl -w vm.drop_caches=3

注:このアクションは、システムの高速化や安定性やパフォーマンスへの影響はなく、キャッシュ上のLinuxカーネルが使用するメモリをクリーンアップするだけです。

または

 Sudo sync && echo 3 | Sudo tee /proc/sys/vm/drop_caches

注: cronジョブを使用して、特定の時間間隔で実行するように上記のコマンドをスケジュールできます。

4
SilleBille

スワッピングが発生するだけでキャッシングが問題ではないことがわかるように、vm.swappiness値を管理することで回避できます。多分それはあなたが探しているものです: why-is-swap-being-used-even-though-i-have-plenty-of-free-ram

1
Tamas

コメントできないので答えます。ディスクに書き込みアクションがあると、ディスクキャッシュはRAMを満たします。大量の書き込みがある場合、キャッシュはシステムがスワップを開始するまで大きくなります。私はこれを前に見たことがあり、それは私には夢中に聞こえますが、明らかに世界の他の地域では正常であるため、それが真実であることを知っています。ロジックを読んでください:ディスクを集中的に使用し、何を得るのですか?ディスクにデータをダンプするため、システムがスワッピングを開始するため、ディスクの使用量が増えます。私は...こんにちは家の誰か?私の提案は、できる限りsync && echo 3 | Sudo tee /proc/sys/vm/drop_cachesを使用することです。それが唯一の解決策であり、他の人の話を聞かないからです。

0
Viktor Joras