web-dev-qa-db-ja.com

キャッシュに使用するメモリが少なくなるようにLinuxを構成するにはどうすればよいですか?

77448 へのフォローアップの質問がありますが、コメントするのに十分な担当者がいません。

同じばかげた質問をする前に、キャッシュに関する同様の投稿や回答をたくさん読んでいて、そこで何が起こっているのか理解しているとしましょう。しかし、私の文脈に合った答えは見つかりませんでした。これはどれですか。

VirtualBoxは、現在のドキュメントに記載されている内容とは異なり、ゲストVMの起動時に、ホストから完全なベースメモリを割り当てませんが、ゲストの要求に応じて割り当てます。チューニングやベンチマーキングではありません。絶えず変化するVMに合うようにベースメモリを再調整し、4ギガを十分に割り当てました。

私が気付いたのは、起動直後にVMは約2ギガを消費しますが、VMで実行されているアプリが大部分がアイドル状態であるため、Linuxのメモリキャッシュは4ギガの制限に達するまでゆっくりと膨らみます。

ラップトップのRAMは貴重であり、処理(パフォーマンス)の要求が低いため、次のようにcron @ rebootコマンドを追加しました。

@reboot root while true; do sleep 1; /sbin/sysctl -w vm.drop_caches=3; done

これにより、パフォーマンスを著しく低下させない方法で継続的な成長が排除されます。 1秒間隔は攻撃的すぎるかもしれませんが、後でそれを試してみます。

結果にはかなり満足していますが、この解決策は野蛮なハックのようです。

メモリキャッシュを「レイジー」/「アグレッシブ」または「ハイパフォーマンス」/「ローパフォーマンス」として構成するための既存の方法はありますか、またはキャッシュサイズ制限またはキャッシュパージ間隔を提供することによってですか?

1
CAB

2つの相反する要件があるようです。 「このホストに4Gを割り当てたい」と「ホストに4Gを使用させたくない」。

その事実とは別に、これらのキャッシュを削除すると、ハイパーバイザーがマップ内のメモリを削除すると思われる理由は何ですか?

ハイパーバイザー(virtualboxホスト)では、デマンドページングが発生している可能性があります-それは問題ありませんが、発生していると思われることはおそらくそうではありません。

仮想メモリが要求される場合、2つの段階があります。

  • コミットされるもの
  • 割り当てられるもの

VMが起動すると、4Gのメモリにコミットします。これは、が持つことができる量ですが、必ずしも実際に使用する量ではありません。

VMがメモリを消費し始めると、コミットされたものまで必要に応じてページを割り当てます。割り当ては実際にメモリをRAM /スワップに配置します。

あなたのシナリオでは、実際にVMは4Gのメモリにコミットする可能性があります(virtualboxモデルはわかりませんが、Wordを使用します)。 VMがページキャッシュをいっぱいにすると、前述のように、そのメモリがすべて割り当てられます。ただし、wontが発生するのは、VMにキャッシュをドロップしたときに割り当てられたメモリをvirtualboxが解放することです。

したがって、ページキャッシュをフラッシュすることにより、VMでメモリが解放されているように見えますが、メモリはまだ割り当てられ、ハイパーバイザーに使用されます。

そのため、ホストラップトップでメモリをまったく節約していません。実際、VMでのI/Oルックアップを防ぐために使用できたメモリが使用できなくなったため、メモリを無駄にしただけです。 。

2
Matthew Ife