Debianサーバーの1つでLVMのストレステストを行っているときに、この問題に遭遇しました。この問題では、サーバーがメモリ不足になるまでメモリがいっぱいになりますが、プロセスがメモリを要求しません。 http://i.imgur.com/cLn5ZHS.png を参照してください。色の説明については https://serverfault.com/a/449102/125894 を参照してくださいhtopで使用されます。
なんでこんなことが起こっているの?
そして、メモリを使用しているプロセスを確認する方法はありますか?
htopはプロセスを隠さないように構成されているので、htopがないのは何ですか?
この特定のケースでは、ストレステストを行っていたので、直接または間接的に、lvmcreate、lvmremove、またはdmsetupが原因であるとかなり確実に言えます。この質問はLVMの問題を解決することではなく、どのプロセスでもメモリが要求されない理由についてであることに注意してください。すべてのLVMコマンドを停止すると、メモリは600MB未満に戻ります。free -m
の出力:
total used free shared buffers cached
Mem: 32153 31958 194 0 52 3830
-/+ buffers/cache: 28075 4077
Swap: 975 0 975
Pastebinの長さによるトップの出力: http://Pastebin.com/WchrpF7W
I/O関連のテストを実行しているようです(LVMボリュームで何をしたかを詳細に説明していません)が、気付いた動作が自然なOSページキャッシュに関連している可能性はありますか?
IOを高速化するために、最近アクセスされたディスク領域をキャッシュするために(時にはほとんどすべての)利用可能なメモリ(つまり、アプリケーションによって予約されていないメモリ)を使用するLinux標準の動作について考えています。
もちろん、アクティブなアプリケーションはこのキャッシュよりも優先されるため、プロセスがより多くのRAMを必要とする場合、キャッシュは動的に縮小されます。
Web上にはLinuxページキャッシュに関するドキュメントがたくさんあります。 ここ はその1つです。
同じ問題がありますが、/ proc/sys/vm /にあるカーネルパラメータを確認しました。overcommit_memory=デフォルト0 overcommit_ratio =デフォルト50 max_map_count =デフォルト65530
そして私の場合、パラメータ、私の問題の根源nr_hugepages、私はカスタム値を持っていましたが、デフォルトに変更します
nr_hugepages = 0
詳細については、 https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/performance_tuning_guide/s-memory-captun を参照してください。
私の英語でごめんなさい:(