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

/proc/meminfo ファイルについて (Linux でのメモリ使用率の分析)

/proc ファイルシステムは疑似ファイルシステムです。ディスク上には存在しません。代わりに、カーネルがメモリ内に作成します。システムに関する情報を提供するために使用されます (元々はプロセスに関するもので、名前の由来です)。
– 「/proc/meminfo」 ' は、システムの空きメモリと使用済みメモリ (物理メモリとスワップの両方) の量、およびカーネルが使用する共有メモリとバッファを報告するために使用されます。
– /proc ファイルシステムについては、 proc マニュアル ページ (man proc)。

「cat /proc/meminfo」の例

コマンド「cat /proc/meminfo」の出力は、OS とサーバーのアーキテクチャによって異なります。以下にリストされているフィールドは、わずかに異なるか、システムに存在しない可能性があります。

# cat /proc/meminfo 
MemTotal:        1882064 kB
MemFree:         1376380 kB
MemAvailable:    1535676 kB
Buffers:            2088 kB
Cached:           292324 kB
SwapCached:            0 kB
Active:           152944 kB
Inactive:         252628 kB
Active(anon):     111328 kB
Inactive(anon):    16508 kB
Active(file):      41616 kB
Inactive(file):   236120 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       2097148 kB
SwapFree:        2097148 kB
Dirty:                40 kB
Writeback:             0 kB
AnonPages:        111180 kB
Mapped:            56396 kB
Shmem:             16676 kB
Slab:              54508 kB
SReclaimable:      25456 kB
SUnreclaim:        29052 kB
KernelStack:        2608 kB
PageTables:         5056 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     3038180 kB
Committed_AS:     577664 kB
VmallocTotal:   34359738367 kB
VmallocUsed:       14664 kB
VmallocChunk:   34359717628 kB
HardwareCorrupted:     0 kB
AnonHugePages:     24576 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       69632 kB
DirectMap2M:     2027520 kB

フィールド

情報は、高統計と低統計の両方の形式で提供されます。上部には、人々が見たいと思う最も一般的な値の要約が表示されます。以下に、ここで説明する個々の値を示します。最初に高い統計について説明します。

高レベルの統計

  • MemTotal :使用可能な RAM の合計 (つまり、物理 RAM からいくつかの予約ビットとカーネル バイナリ コードを差し引いたもの)
  • MemFree :LowFree+HighFree (全体の統計) の合計です
  • MemShared :0;は互換性の理由からここにありますが、常にゼロです。
  • バッファ :バッファ キャッシュ内のメモリ。現在ではほとんど指標として役に立たない 未加工のディスク ブロック用の比較的一時的なストレージは、非常に大きくなるべきではありません (20MB 程度)
  • キャッシュ :ページキャッシュ (ディスクキャッシュ) のメモリから SwapCache を差し引いたもの、SwapCached は含まれません
  • スワップキャッシュ :一度スワップアウトされたメモリはスワップインされますが、まだスワップファイルにもあります(メモリが必要な場合、すでにスワップファイルにあるため、再度スワップアウトする必要はありません。これによりI / Oが節約されます)

詳細な統計

<強い>1. VM 統計
VM は、キャッシュ ページを「アクティブ」メモリと「非アクティブ」メモリに分割します。アイデアは、メモリが必要で、そのためにキャッシュを犠牲にする必要がある場合、使用されないと予想されるため、非アクティブから取得するというものです。 vm は定期的に使用されているものをチェックし、データを移動します。

統計は次のとおりです:

  • アクティブ :最近使用され、絶対に必要でない限り、通常は再利用されないメモリ。
  • Inact_dirty :ダーティとは、「ディスクまたはスワップへの書き込みが必要な可能性がある」ことを意味します。解放するには、より多くの作業が必要です。例として、まだ書き込まれていないファイルが考えられます。 I/O を抑えるために、メモリへの書き込みが早すぎることはありません。たとえば、ログを書き込んでいる場合は、完全なログの準備が整うまで待ってからディスクに送信することをお勧めします。
  • Inact_clean :簡単に解放できると仮定します。カーネルは、少しの余裕を持たせるために、常にいくつかのクリーンなものを保持しようとします。
  • Inact_target :十分な数の非アクティブなページがあることを確認するためにカーネルが使用する単なる目標メトリックです。超過すると、カーネルはページをアクティブから非アクティブに移動する作業を行いません。ページは、他のいくつかの方法で非アクティブになることもあります。長いシーケンシャル I/O を実行すると、カーネルはそのメモリを使用しないと想定し、予防的に非アクティブにします。そのため、カーネルが一部のキャッシュを「使用されない可能性が高い」とマークし、「最後に使用された」順序でチートできるようにするため、ターゲットよりも多くの非アクティブなページを取得できます。

<強い>2.メモリ統計

  • 高合計 :高域のメモリの総量です。 Highmem は、(約) 860MB の物理 RAM を超えるすべてのメモリです。カーネルは、間接的なトリックを使用して高メモリ領域にアクセスします。データ キャッシュは、このメモリ領域に配置できます。
  • LowTotal :非 highmem メモリの総量。
  • LowFree :低メモリ領域の空きメモリ量。これは、カーネルが直接アドレス指定できるメモリです。すべてのカーネル データ構造はロー メモリに入る必要があります。
  • スワップトータル :物理スワップ メモリの合計量。
  • スワップフリー :空きスワップ メモリの合計量。 RAM から削除され、一時的にディスク上にあるメモリ
  • 汚い :ディスクへの書き戻しを待機しているメモリ
  • 書き戻し :アクティブにディスクに書き戻されているメモリ
  • マッピング済み :ライブラリなど、マップされたファイル
  • スラブ :カーネル内データ構造キャッシュ
  • Committed_AS :このワークロードで OOM (メモリ不足) が発生しないことを 99.99% 保証するために必要な RAM の推定量。通常、カーネルはメモリをオーバーコミットします。つまり、1GB の malloc を実行しても、実際には何も起こりません。その malloc メモリの使用を開始した場合にのみ、必要に応じて実際のメモリを取得できます。それで、住宅ローンを借りて、銀行が破綻しないことを願っています。他のケースには、書き込み時のみ共有されるファイルを mmap し、そのデータのプライベート コピーを取得する場合が含まれる場合があります。通常はプロセス間で共有されますが。 Committed_AS は、最悪の場合に必要な RAM/スワップの量の推定値です。
  • ページテーブル :最下位レベルのページ テーブル専用のメモリ量。
  • リバースマップ :実行された逆マッピングの数
  • VmallocTotal :vmalloc メモリ領域の合計サイズ
  • Vmalloc 使用済み :使用される vmalloc 領域の量
  • VmallocChunk :空いている vmalloc 領域の最大連続ブロック


Linux
  1. Linux /proc/id/maps について

  2. /proc/[pid]/pagemaps および /proc/[pid]/maps | Linux

  3. /proc/meminfo の MemTotal が変更されるのはなぜですか?

  1. Linuxは複数の連続したパスセパレーター(/ home //// username /// file)をどのように処理しますか?

  2. Linux – / usr/binと/usr/sbinを/bin(gnu / linux)にマージしますか?

  3. Linux プロセスのメモリをファイルにダンプする

  1. 空きメモリの90%を埋める方法は?

  2. Linux – / proc/mntを/proc/ mountsにリンクしますか?

  3. Linux の /etc/inittab ファイルについて