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


49

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

記憶

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

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

bleachbitメモリ

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

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


これで問題が解決しますか?理由なくメモリがいっぱいになることはありません。また、記憶がいっぱいになるという問題があり、それをさかのぼりtracker-minerます。すべてのトラッカーパッケージをアンインストールすると、問題はなくなりました。また、4GBのメモリがあり、2GBが使用されていますが、問題は発生していません。
ダニエルクルマン

1
@danielkullmann:彼はアプリが使用するメモリではなく、キャッシュされたメモリについて言及しています
ish

@izxはい、知っています。間違った問題の解決策を探しているだけかもしれません。カーネルは、プログラムが必要とするときにメモリをキャッシュでいっぱいにしないほど賢いです。だからこそ、彼の記憶の問題は、あまりにも多くのメモリを使用するプログラムに起因していると思います。
ダニエルクルマン

@danielkullmann:私はあなたがどのようにすべてのメモリをゴブリングしている1つのプロセスにどのようにたどり着いたのか知​​りたいです...そのためのツール/コマンドはありますか?
バラドワジスリギリラジュ

htopコマンドを使用し、メモリ使用量でソートしました。
ダニエルクルマン

回答:


58

注: LinuxはRAMを「食べている」わけではありません!理由を理解するには、以下のガイラの優れた答えをご覧ください...

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

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

キャッシュを無効にする簡単な方法はありませんが、次のようにする場合は、毎分キャッシュをクリーニングすることで同じ効果を実現できます。

  • それ作るのcronジョブ
  • を押しAlt-F2、を入力してgksudo gedit /etc/crontab、この行を下部近くに追加します。

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

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

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

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

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

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


3
えっ!キャッシュをノックアウトするだけで十分ですが、cronjobを作成しますか?つまり、これはいわば質問を「解決」しますが、それで痛みが軽減されるわけではありません。
リード


@izx:うーん...だからこれはcronジョブを作成する方法です。キャッシュを定期的に削除する場合、実際にシステムの速度が低下しているという意味ではありませんか?もしそうなら、あなたの答えはガイラの答えよりも理論的な答えのように聞こえると思います。:p良い答えところで...
バラドワジスリギリラジュ

1
@ForbiddenOverseer:あなたがキャッシュを「無効化」したかったので、私はそれを入れました、そしてそれを定期的に落とすことがそれを達成する唯一の方法です。一番上のメモ(およびgeirhaのリンク)には、「RAMを食べる」ように見えても、キャッシュが実際にほとんどの時間システムを高速化することが明確に記載されています---はい、そうです、IMOはシステムをスローダウンさせます!、しかし、あなたは、私はちょうどあなたの質問に答えの代わりに、単にあなたがしつこいし、あなたがそれを行うべきではありませんので、それは悪いアイデアだとあなたを伝えるので、それを試してみたかった私は...実験にあなたの力を与えた:D
ISH

1
Ubuntu Server 12.04 LTSをVDSとして使用しています。私はこの答えで提供されているアプローチを試みていますが、私は常に取得していtee: /proc/sys/vm/drop_caches: Permission deniedます。任意のヒント?
エイマンタス

44

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

www.linuxatemyram.comは、これをFAQフォームで美しく説明します。基本的なものは次のとおりです。

どうしたの?

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

なぜこれを行うのですか?

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

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

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

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

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

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


出典:前述のとおり、優れたwww.linuxatemyram.com-詳細については、をご覧ください。


1
@geirha:リンクをありがとう...それは非常に有益で、最後に与えられた実験が好きでした!!
バラドワジスリギラジュ

@izx:tbh、受け入れられた答えを決めるのに苦労しています。言うまでもなく、このリンクは実際には他のあらゆる
点で有益でした

@ForbiddenOverseer:詳細な回答については、回答の私のコメントを参照してください-なぜそうすべきではないのかについての短いバージョンをお伝えしましたが、とにかく質問に答えて、実験して自分で試してみる力を与えます。キャッシュのクリーニング/ドロップが役立つと思わない場合は、もうやめないでください:)
ish

@izx、このケースでそれを行うのは少し難しいとわかりました。しかし、あなたは問題について有用なテキストを書いたので、おそらくあなたの答えにURLを追加するだけで、私たちの答えは削除されますか?
ガイラ

必要なし、あなたのリンクは素晴らしいリソースにあります。回答にいくつかの部分を(属性付きで)組み込んだので、今では完全に有効な代替手段になっています(実際、一般の人が見るより良い回答です!)素晴らしい仕事です。
ISH

4

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

 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ジョブを使用して、特定の時間間隔で実行されるように上記のコマンドをスケジュールできます。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.