Linux のメモリ使用量のソースは /proc/meminfo にはありません

Linux のメモリ使用量のソースは /proc/meminfo にはありません

メモリ使用量に奇妙なパターンを示す Linux サーバーを実行しており、これを調査しようとしています。

munin によると、通常の操作中は、アプリケーションに約 200 MB のメモリが使用されますが、時々 (おそらく 2 日ごとに)、このグラフに示すように、約 1 GB の突然の増加が発生します。

メモリ使用量の急激な増加を示す munin メモリ グラフ

原因を突き止めようとしていますが、何が原因なのかよくわかりません。munin がこのメモリを「アプリ」に帰属させているという事実は、実行中のプロセスの 1 つが単に大量のメモリを使用していることを示唆していますが、この状況が発生したときに top を見ると、どのプロセスもそれほど多くのメモリを使用していないことがわかります。実際、メモリを消費する上位 15 のプロセスは、この状況が発生してもまったく変化せず、上位のプロセスはメモリの 2.2% しか使用していません。また、ps からのメモリ情報では、この量には遠く及びませんが、200 MB 程度です。

増加の高さは通常同じで、この例でわかるように、数時間後には消えてしまいます。

この動作をトリガーする確実な方法は、wget を使用して、ネットワーク上の ssh トンネル経由でローカル ディスクに大きなファイル (1.4G) をダウンロードすることであることがわかりました (ネットワーク アクティビティだけではトリガーされません)。

/proc/meminfoメモリ使用量をより詳細に確認するために、 10秒ごとにログを記録し、このデータのグラフを含むtarball問題の動作を引き起こしたダウンロードは 10:35:32 に開始され、10:38:53 に終了しました。元のログ データも tarball に含まれています。

では/proc/meminfo、空きメモリの大幅な減少を説明できるほど上昇する値はないため (これは基本的に、munin が「アプリ」に帰属するものです)、私にはわかりません。munin が報告する使用メモリの量は、free および top でも報告されますが、プロセス リストには、このような高いメモリ使用量や、ファイルのダウンロード時の突然の増加を説明できるプロセスがありません。

私が理解しようとしているのは次のことです:

  • 増加したメモリを使用する特定のプロセスがないのに、メモリ使用量がこのように動作するのは正常ですか?
  • で説明されていない他のメモリ ソースは何でしょうか /proc/meminfo?

それとも、これはシステムが侵害されている兆候なのでしょうか?

答え1

munin はグラフには最適ですが、どのアプリケーションが負荷の原因になったのかはわかりません。

atop(高度なトップ)を使用することもできます。

atop は生のログ ファイルを記録し、そのファイルを開いて対話的に時間を前後に移動し、特定の瞬間に何が起こっていたかを確認することができます。

ator -r /var/log/atop_oame_datetキーを使用するよりもT、疑わしいアクティビティが発生した時点まで戻って、そこで何が起こっていたかを確認できます。

答え2

システムは物理的なメモリ不足に陥っていません。したがって、1.4 GB のファイルを転送しようとすると、1.4 GB のメモリが使用されます。システムには 2 つの選択肢があります。メモリを完全に無駄にするか、非効率的に使用するかです。後者を選択します。これは正常な動作です。

関連情報