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

Linux でメモリ使用量はどのように報告されますか?

解決策 1:

要するに:

  • 仮想サイズ: プロセスが管理しているアドレス空間の量です。仮想アドレス空間には、プロセスがポインタ (メモリ アドレス参照) を介してアクセスできるすべてのものが含まれます。たとえば、プログラムがビデオ カードのフレームバッファにアクセスする場合、そのメモリはプロセスの仮想空間にマップされ、ポインタに格納されているアドレスを受け取ります。メモリ マップ ファイルと匿名マッピングも、仮想アドレス空間のサイズに含まれます。ほとんどすべてが仮想サイズです。 03 に記載されているすべてのアドレス範囲のサイズを合計すると、 、仮想サイズとほぼ同じ値が返されるはずです。

  • 居住者の規模: 現在メモリに常駐しているプロセスに特に属するメモリの量です。つまり、スワップにないメモリの量です。プロセスの実行中であっても、プロセスの一部がスワップ メモリに存在する可能性があることに注意してください。オペレーティング システムは、プロセスがアクセスしようとすると、これらの領域をスワップからプルします。これには、ヒープ、すべてのスレッドのスタック、およびその他のプライベート マッピングを含める必要があります。 12 を見ると 、2034 およびその他の匿名マッピング (ファイル パスのないもの) は、スワップされるか、常駐サイズで考慮されます。

  • 共有サイズ: 複数のプロセスに属する可能性があるメモリの量です。たとえば、メモリにロードされた同じアプリケーションの 4 つのインスタンスがある場合、ヒープの 4 つのインスタンスと少なくとも 4 つのスタック (プロセスごとに 1 つ) があります (これは常駐メモリです)。プログラムとそのライブラリのバイナリ コード。こちらは共有スペース。プログラム バイナリ コードとそのライブラリだけでなく、ローカライズ ファイル、読み取り専用プログラム データ、SysV および POSIX 共有メモリ セグメント、セマフォなども含まれます。 、ライブラリおよびプログラム ファイルに関連付けられたほとんどのマッピングは共有されます。

VIRT には RSS と SHR の結合が含まれており、常にそれらのいずれよりも大きいことに注意してください。 RSS と SHR の両方として説明される地域があるかもしれません。

解決策 2:

ジュリアーノの答え:

<ブロック引用>

RSS + SHR <=VIRT であることに注意してください。

これは誤りです。SHR には、他のプロセスと共有できるすべての仮想メモリが含まれており、RSS には、プロセスによって使用される RAM 内のすべてのメモリが物理的に含まれています。

したがって、現在 RAM にあるすべての共有メモリは SHR と RSS の両方でカウントされるため、SHR + RSS は重複カウントを含む可能性があるため意味がありません。

RSS + SHR> VIRT でプロセスを構築するには、大きなファイル (1GB) を mmap してから完全に読み取ります。mmap されたファイルは RAM にロードされ、VIRT、SHR、RSS はそれぞれ 1GB よりわずかに大きくなるため、SHR は+ RSS> VIRT。


Linux
  1. Linuxでゾンビプロセスを強制終了する方法

  2. Linuxのメモリ使用量

  3. Linux ベースのサーバーでメモリ使用量を確認する方法

  1. Linuxでユーザーのメモリ使用量を見つける方法

  2. 単一の Linux プロセスのメモリ使用量を制限する

  3. Linuxでアプリケーションによるメモリ使用量を制限するには?

  1. Linuxpmapコマンドでプロセスのメモリ使用量を確認する方法

  2. LinuxでプロセスのCPU使用率を制限する方法

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