GNU/Linux >> Linux の 問題 >  >> Linux

Linux 非アクティブ メモリ

非アクティブなメモリを見ると興味深い場合があります。たとえば、アクティブなメモリと非アクティブなメモリの比率が高い場合は、メモリ不足を示している可能性がありますが、その状態には通常、理解しやすく観察しやすいページング/スワッピングが伴います。ファイル /proc/kpageflags すべての物理メモリ ページの 64 ビット ビットマップが含まれています。page-types で概要を取得できます。 これはカーネルに付属している場合があります。

active についてのあなたの理解 非アクティブ ただし、正しくありません

  • アクティブ メモリ 「最近」アクセスされたページです
  • 非アクティブなメモリ 「最近」アクセスされていないページです

「最近」は時間の絶対的な尺度ではありませんが、アクティビティとメモリ プレッシャーにも依存します (技術的な詳細については、無料の書籍 Understanding the Linux Virtual Memory Manager を参照してください)。 、第 10 章がここに関連しています)、またはカーネルのドキュメント (pagemap.txt)。

各リストは LRU (多かれ少なかれ) として格納されます。非アクティブなメモリ ページは、先制的に (空きメモリ ページが必要になる前に)、または空きメモリが構成された制限を下回り、空きページが (差し迫って) 必要になったときに、スワップファイルに書き込むのに適した候補です。

どちらのフラグも、実行中のプロセスに割り当てられたページに適用されます。永続メモリまたは共有メモリを除き、すべてのメモリはプロセスの終了時に解放されます。それ以外の場合はバグと見なされます。

この低レベルのページ フラグでは、PID を知る必要はありません (また、メモリ ページには、どのような場合でもマップされた複数の PID を含めることができます)。そのため、要求するデータを提供するために必要な情報は 1 か所にはありません。

プロセスごとにこれを行うには、/prod/PID/maps から仮想アドレス範囲を抽出する必要があります 、 /proc/PID/pagemap で PFN (物理ページ) に変換します 、および /proc/kpageflags へのインデックス .すべて pagemap.txt に記述されています 、C の約 60 ~ 80 行が必要です。VM システムのトラブルシューティングを行っていない限り、この数字はあまり興味深いものではありません。できることの 1 つは、プロセスごとに非アクティブでスワップバックされたページをカウントすることです。これらの数値は、VSZ (合計 VM サイズ) と比較して RSS (常駐) サイズが小さいプロセスを示す必要があります。別の方法として、メモリ リークを推測することも考えられますが、そのタスクにはもっと優れたツールがあります。


外部プログラムにとって完全に無意味なツールはありません。

それを知る必要があるシステムの唯一の部分は、使用可能なメモリが不足した場合に何をページ (スワップ) するかを知るためにそれを使用するカーネルのメモリ ハンドラです。

心配を引き起こす可能性のある唯一の関連ケースは、スワップがほぼいっぱいになった場合です。そのような場合は、それを増やしてください。

非アクティブなメモリの調査を意味する実際の問題は見たことがありません。


Linux
  1. Linuxのメモリ使用量

  2. Linux –実際のメモリ使用量?

  3. Linuxのメモリ割り当てはノンブロッキングですか?

  1. Linuxカーネル:イノベーショントップ5

  2. Linuxのメモリ不足キラー

  3. Linux はメモリをスクラブできますか?

  1. Linuxでメモリキャッシュをクリアする方法

  2. Linux – Linuxのメモリ使用量を正しく判断しますか?

  3. Kali Linux 2018.1 リリース