@tooljpさんをフォロー

メモリ管理の仕組みと使用量の計算 | Redhat Enterprise Linux 5/6

このページでは Redhat Enterprise Linux 5/6のメモリ管理の仕組み、及び使用容量の計算方法に関して説明します。
Linux は物理メモリの空きがある場合は可能な限り物理メモリをキャッシュ/バッファとして使用します。よって特にメモリリークが発生していない状況でも、物理メモリの空き容量は減少していきます。もし物理メモリが必要となった場合にはキャッシュやバッファが開放されその領域が使用されます。よって実際に物理メモリの空き容量を計算する場合には、空きメモリ + キャッシュ使用量 + バッファ使用量で計算する必要があります。ここではそれを"真の空き容量"と呼ぶことにします。


初版:2012年12月1日


Linux におけるメモリは主に以下4種類に分類されます。

(1)空き
物理メモリ上で完全に未使用な領域。

(2)キャッシュ / バッファ
キャッシュ
:ハードディスク等のファイルをメモリにキャッシュ
バッファ:ブロックデバイスが使用するデータバッファ

(3)IPC共有 / tmpfs
IPC共有:プロセス間の共有メモリ
tmpfs:RAMディスクなど

(4)カーネル / プロセス
カーネル / プロセスが使用するメモリ。主にカーネル / プロセスが物理メモリを多く消費する。



各容量は以下のとおり計算されます。

A"free"コマンド実行結果の "Mem"行の"free"の値。
B"free"コマンド実行結果の "Mem"行の"buffers"と"cached"の合計。
C
IPC共有:"ipcs -um"コマンド実行結果。
tmpfs:"df -k"コマンド実行結果のfilesystemtempfs の行。
D"free"コマンド実行結果の "-/+ buffers/cache"行の"used"。

@真の空きメモリ容量は"free"コマンド実行結果の "-/+ buffers/cache"の"free"の値。


例:以下はfreeコマンドの実行結果です。

A空き容量:1,540,992 MBytes
Bキャッシュ + バッファ:23,558 + 204,116=227,674 MBytes
Cこの例ではほぼ0 MBytesと仮定します。
D282,468 MBytes

A+B+C+D = 2,051,134で合計メモリの 2,051,1164 MBytesと合致します。差分はCを0と想定した分と思われます。

真の空き容量は@の1,768,696 MBytes です。A+B=ほぼ一致します。

[redhat linux 技術ドキュメント トップ]
[FAQ CENTER トップ]