topimg.jpg


スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

Linuxの空きメモリ容量の分析

1.と2.の2種類の方法があるが、
buffers/cacheの使用分を全て空きメモリとして換算してしまう2.のやり方は少し乱暴な気がする。
1.のほうが実際の空きメモリに近いと個人的には思う。
cacheの中にはactiveなページとinactiveなページの2種類が存在し、実際にはactiveなページをすぐに再利用できないからだ。


1. vmstatから計算
#vmstat -a
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free inact active si so bi bo in cs us sy id wa st
0 0 120   4042176 1405608 2151528   0 0   4 48 11  4  4  17 79 0 0


(実際に利用可能なメモリ量)≒(free+inact)= 4042176 + 1405608 = 5447784KB

・inact
ページキャッシュや無名ページのうち、最後にアクセスされてからある程度時間がたち、ストレージとの同期も完了していて、すぐに捨てられるページ
・active
ページキャッシュや無名ページのうち、最近利用したり、まだストレージとの同期が取れていない「捨てられない」ページ

参考
http://www.atmarkit.co.jp/flinux/rensai/tantei01/bangai01c.html


2. freeコマンドから計算
#free (-mをつけるとMB表示できて便利)
total used free shared buffers cached
Mem: 8169540 4126244 4043296 0 298548 2553784
-/+ buffers/cache: 1273912 6895628
Swap: 2129912 120 2129792

(実際に利用可能なメモリ量)≒ buffers/cachedの転用分を考慮したメモリ空き量=6895628KB=(free+buffers+cached)=4043296+298548+2553784

ちなみに、CentOSのGUIのシステムモニタにあるメモリとスワップの履歴は、-/+ buffers/cacheのusedの値1273912を物理メモリの使用量としてカウントしているっぽい

・buffers
バッファキャッシュに割り当てたメモリ。
バッファキャッシュ(buffer cache)には、ブロックデバイスドライバが使用するデータバッファが含まれている。これらのバッファは固定サイズ(たとえば、512 バイト)で、ブロックデバイスから読み出されたか、そこに書き込まれた情報のブロックが入っている。ブロックデバイスとは、データアクセスの際に、固定サイズのブロック単位でのみ読み書きできるデバイスを指す。すべてのハードディスクはブロックデバイスである。
(ブロック:デバイスごとに決まっているデータ入出力の最小単位。例えば、ハードディスクの場合、セクタ単位にデータの読み書きが行われるのでブロックサイズは512バイトであることが多い)
・cache
ページキャッシュに割り当てたメモリ。
ページキャッシュ(page cache)は、ディスク上のイメージやデータへのアクセスを高速化するために使用される。これは、ページ単位でファイルの論理的な内容をキャッシュし、ファイル名とそのファイル内のオフセットを使ってアクセスされる。ページがディスクからメモリに読み出されると、それらはページキャッシュにキャッシュされる。
(ページ:Linuxのカーネルがメモリ領域を扱う際の最小単位。例えば、x86のRed Hat Enterprise Linuxでは4096 バイトだが、他のOSでは異なることもある)

buffers,cache用語説明引用元
・The Linux Kernel:4.メモリ管理
http://www.linux.or.jp/JF/JFdocs/The-Linux-Kernel-4.html
・Linux Kernel Documents:バッファキャッシュ
http://sourceforge.jp/projects/linux-kernel-docs/wiki/internal24-58-%E3%83%90%E3%83%83%E3%83%95%E3%82%A1%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5
・Linux Kernel Documents:ページキャッシュ
http://sourceforge.jp/projects/linux-kernel-docs/wiki/internal24-74-%E3%83%9A%E3%83%BC%E3%82%B8%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5#SECTION03300000000000000000




参考
http://www.math.kobe-u.ac.jp/~kodama/tips-free-memory.html

※おまけ
/proc/meminfoではvmstatやfreeで使用している元情報がレポートされている。
より多くの情報が記載されている。

#cat /proc/meminfo
MemTotal: 8169540 kB
MemFree: 4042432 kB
Buffers: 298672 kB
Cached: 2554132 kB
SwapCached: 24 kB
Active: 2151224 kB
Inactive: 1405564 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 8169540 kB
LowFree: 4042432 kB
SwapTotal: 2129912 kB
SwapFree: 2129792 kB
Dirty: 100 kB
Writeback: 0 kB
AnonPages: 703916 kB
Mapped: 109340 kB
Slab: 385100 kB
PageTables: 27728 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
CommitLimit: 6214680 kB
Committed_AS: 1200260 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 3724 kB
VmallocChunk: 34359733883 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
Hugepagesize: 2048 kB

各項目の意味は↓参照
http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/ja/ref-guide/s1-proc-topfiles.html

3. topコマンドで、メモリ使用率が高いプロセス順に表示
#top
・top コマンドを起動してから "M"(大文字) すると消費メモリの順にプロセスが表示される 
スポンサーサイト
  1. 2009/10/27(火) 02:04:29|
  2. Linux/Unix
  3. | トラックバック:0
  4. | コメント:0
<<Linuxでのリンク作成方法 | ホーム |

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://192168111.blog71.fc2.com/tb.php/1-50a3366c
この記事にトラックバックする(FC2ブログユーザー)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。