E.2.18. /proc/meminfo
これは、システムの RAM 使用率に関する多くの有用な情報を報告するため、
/proc/
ディレクトリー内で一般的に使用されるファイルの 1 つです。
以下の
/proc/meminfo
仮想ファイルのサンプルは、2 GB の RAM と 1 GB のスワップ領域が搭載されているシステムです。
MemTotal: 1921988 kB MemFree: 1374408 kB Buffers: 32688 kB Cached: 370540 kB SwapCached: 0 kB Active: 344604 kB Inactive: 80800 kB Active(anon): 22364 kB Inactive(anon): 4 kB Active(file): 322240 kB Inactive(file): 80796 kB Unevictable: 0 kB Mlocked: 0 kB SwapTotal: 1048572 kB SwapFree: 1048572 kB Dirty: 48 kB Writeback: 0 kB AnonPages: 22260 kB Mapped: 13628 kB Shmem: 196 kB Slab: 91648 kB SReclaimable: 34024 kB SUnreclaim: 57624 kB KernelStack: 2880 kB PageTables: 3620 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 2009564 kB Committed_AS: 134216 kB VmallocTotal: 34359738367 kB VmallocUsed: 12276 kB VmallocChunk: 34359712840 kB HardwareCorrupted: 0 kB AnonHugePages: 0 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB DirectMap4k: 8064 kB DirectMap2M: 2088960 kB
ファイルにはキロバイト(kB、1 kB は 1000 B)が表示されますが、実際には kibibytes になります(1 KiB は 1024 B になります)。
/proc/meminfo
におけるこの意図は知られていますが、従来の懸念のために修正されていません。プログラムは /proc/meminfo
に依存して "kB" 文字列でサイズを指定します。
/proc/meminfo
の情報の多くは、free コマンド、top コマンド、および ps コマンドで使用されます。実際、free コマンドの出力は、/proc/meminfo
の内容と構造と似ています。ただし、/proc/meminfo
自体には詳細が記載されています。
MemTotal
- kibibytes 内の使用可能な RAM の合計量。これは、予約済みビットとカーネルバイナリーコードの数を引いた物理 RAM です。MemFree
- kibibytes 内の物理 RAM の容量は、システムが未使用のままです。Buffers
- raw ディスクブロックの一時ストレージの量(kibibytes)。Cached
- キャッシュメモリーとして使用される物理メモリーの容量(kibibytes)。SwapCached
- kibibytes では、swap に移動した後、メインメモリーに戻りますが、引き続き swap ファイル内に残ります。メモリーを再度スワップに移動する必要がないため、I/O が保存されます。Active
- キビバイトで、より最近使用され、絶対に必要でない限り、通常は回収されません。Inactive
- 最近使用されたメモリーの量(kibibytes では使用されず、他の目的で回収可能)。Active(anon)
- 匿名メモリーおよび tmpfs/shmem メモリーの量(kibibytes ではアクティブ、システムが最後に swap に移動された後にアクティブ使用であった)。Inactive(anon)
- エビクションの候補である kibibytes の匿名および tmpfs/shmem メモリーの量。Active(file)
- ファイルキャッシュメモリーの量(kibibytes 内)、またはシステムが最後に回収された後にアクティブ使用であったり、アクティブ使用であったりします。Inactive(file)
- ディスクから新たに読み込まれるファイルキャッシュメモリー、kibibytes の量、または回収を行う候補です。Unevictable
- ユーザープログラムによってメモリーにロックされているため、ページアウトコードによって検出されるメモリーの量をページアウトコードで検出します。Mlocked
- ユーザープログラムによってメモリーにロックされているためにエビクトできないメモリーの合計量(kibibytes)。SwapTotal
- kibibytes 内で利用可能な swap の合計量。SwapFree
- kibibytes 内の空きスワップの合計量。Dirty
- kibibytes 内のメモリーの合計量。ディスクへの書き込みを待機しています。Writeback
- kibibytes 内のメモリーの合計量。これは、ディスクにアクティブに書き戻されます。AnonPages
- ファイルでサポートされておらず、ユーザー空間ページのテーブルにマップされるページで使用されるメモリーの合計量(kibibytes)。Mapped
- ライブラリーなど、mmaped ファイルに使用されるメモリー(kibibytes 単位)。Shmem
- 共有メモリー(shmem)および tmpfs によって使用されるメモリーの合計量(kibibytes)。Slab
- カーネルが独自の使用のためにデータ構造をキャッシュするために使用されるメモリーの合計量(kibibytes 単位)。SReclaimable
- キャッシュなど、回収できる Slab の一部です。SUnreclaim
- メモリーがない場合でも、Slab の一部で回収できません。KernelStack
- システムの各タスクに対して実行されるカーネルスタックの割り当てで使用されるメモリーの量(kibibytes)。PageTables
- 最低ページテーブルレベル専用のメモリーの合計量(kibibytes)。NFS_Unstable
- サーバーに送信される NFS ページの量(kibibytes)は、まだ安定したストレージにコミットされていない。Bounce
- ブロックデバイス「bounce buffer」に使用されるメモリーの量(kibibytes)。WritebackTmp
- FUSE が一時的なライトバックバッファーに使用するメモリーの量(kibibytes)。CommitLimit
- オーバーコミット比(vm.overcommit_ratio
)に基づいてシステムで現在利用可能なメモリーの合計量。この制限は、厳密なオーバーコミットアカウンティングが有効にされている場合にのみ準拠されます(vm.overcommit_memory
のモード 2)。CommitLimit
以下の式で計算されます。([total RAM pages] - [total huge TLB pages]) * overcommit_ratio ───────────────────────────────────────────────────────────────── + [total swap pages] 100
たとえば、1 GB の物理メモリーとvm.overcommit_ratio
が 30 の 7 GB の swap を搭載したシステムでは、7.3 GB がCommitLimit
になります。Committed_AS
- ワークロードを完了すると予測されるメモリーの合計量(kibibytes)。この値は、最悪の場合のシナリオ値を表し、スワップメモリーも含まれます。VMallocTotal
- 割り当てられた仮想アドレス空間の合計メモリー容量(kibibytes 単位)。VMallocUsed
- 使用されている仮想アドレス空間のメモリー合計量(kibibytes)。VMallocChunk
- 利用可能な仮想アドレス空間の最大連続したメモリーブロック(kibibytes)。HardwareCorrupted
- キビバイトのメモリー量(kibibytes)では、ハードウェアによって識別され、カーネルによって外部に設定されたメモリーの量により使用されません。AnonHugePages
- ファイルでサポートされておらず、ユーザー空間ページのテーブルにマップされるヒュージページによって使用されるメモリーの合計量(kibibytes)。HugePages_Total
- システムの Huge Page の合計数。この数字は、/proc/sys/vm/hugetlb_pool
で指定される hugepages とは別のメガバイトセットでHugepagesize
を除算することで派生します。この統計は、x86、gitops、および AMD64 のアーキテクチャーにのみ表示されます。HugePages_Free
- システムで利用可能なヒュージページの合計数この統計は、x86、gitops、および AMD64 のアーキテクチャーにのみ表示されます。HugePages_Rsvd
- hugetlbfs に予約されている未使用の Huge Page の数。HugePages_Surp
: 余分のヒュージページ数。Hugepagesize
- kibibytes の各 hugepages ユニットのサイズ。デフォルトでは、32 ビットアーキテクチャー用の uniprocessor カーネルの 4096 KB です。SMP、Hugemem カーネル、および AMD64 の場合、デフォルトは 2048 KB です。gitops アーキテクチャーの場合、デフォルトは 262144 KB です。この統計は、x86、gitops、および AMD64 のアーキテクチャーにのみ表示されます。DirectMap4k
- 4 kB ページマッピングのあるカーネルアドレス空間にマップされるメモリーの量(kibibytes)。DirectMap2M
- 2 MB ページマッピングを使用してカーネルアドレス空間にマップされるメモリーの量(kibibytes)。