Linux Kernel(2.6)の実装に関するメモ書き

proc/meminfo


cat /proc/meminfoとすることで、現在のメモリの使用状況を確認できる。

表示例
MemTotal:      1001008 kB
MemFree: 200708 kB
Buffers: 43400 kB
Cached: 395740 kB
SwapCached: 0 kB
Active: 557556 kB
Inactive: 178624 kB
HighTotal: 97216 kB
HighFree: 140 kB
LowTotal: 903792 kB
LowFree: 200568 kB
SwapTotal: 2096472 kB
SwapFree: 2096472 kB
Dirty: 224 kB
Writeback: 0 kB
Mapped: 356492 kB
Slab: 47820 kB
CommitLimit: 2596976 kB
Committed_AS: 689048 kB
PageTables: 6192 kB
VmallocTotal: 114680 kB
VmallocUsed: 4560 kB
VmallocChunk: 107264 kB
HugePages_Total: 0
HugePages_Free: 0
Hugepagesize: 2048 kB


表1 meminfoの表示項目
項目
説明
MemTotalメモリ搭載量
MemFree空きメモリ量
BuffersBufferのサイズ。(*1)
CachedPageCacheのサイズ(*2)
SwapCached
PageoutされていたページをPageinして、まだディスクにPageoutした時のデータが残っているページの容量。空きメモリが足りなくなった場合は、Pageoutせずにそのまま解放できるのでI/Oを省略できる。
Active
最近アクセスされたページ。基本的に解放の対象外。(*3)
Inactive
最近アクセスのないページ。空きメモリが少なくなるとこのページから解放されていく。
HighTotal
HighMemoryの総容量
HighFree
HighMemoryの空き容量
LowTotalLowMemoryの総容量
LowFreeLowMemoryの空き容量
SwapTotalスワップ領域の総容量
SwapFreeスワップ領域の空き容量
DirtyDirtyページのサイズ。ディスクへ書き出す必要がある。
Writebackスワップデバイスに書き出し中のページの容量
MappedPageTableからマップされているページの容量?
Slabスラブアロケータのメモリ使用量
CommitLimitプロセスが確保できるメモリの制限値(*4)
Committed_ASプロセスが割り当てているアドレス空間の総量(物理ページの割り当て量ではない)。malloc()だけしてまだアクセスしていない領域(仮想アドレス空間だけ割り当てられて物理ページが割り当てられていない状態)も含まれる。(VM的に'commit'されいつでも使用できる状態)
PageTablesPageTableのメモリ使用量
VmallocTotalvmalloc()により確保するアドレス空間の総容量
VmallocUsedvmalloc()で割り当て済みの容量
VmallocChunkvmalloc用領域のFree領域で最も大きい連続領域のサイズ


(*1)
各デバイスのbdev->bd_inode->i_mapping->nrpagesの総和から計算している。

BufferはPageCacheとして実装されており、PageCache割り当て時にbdev->bd_inode->i_mappingを指定している。


(*2)
get_page_cache_size()-total_swapcache_pages-i.bufferram
スワップキャッシュ、BufferはPageCacheとして実装されているのでその分を引いてある。

get_page_cache_size()はグローバル変数nr_pagecacheを返している。nr_pagecacheはadd_to_page_cache()でページキャッシュをRadixTreeに登録する時にインクリメントされる。

(*3)
Active,InactiveリストはZone毎に持つ。これらのリストにはPageCacheやユーザプロセスのページがつながれる。

(*4)
('vm.overcommit_ratio' * Physical RAM) + Swap で計算される。

vm.overcommit_memoryが2の時、本値をこえてアドレス空間をcommit(allocate)出来なくなる。デフォルトのモード0だと本値での厳密なチェックは行なわないが、無茶な割り当てはできないようチェックは行なっている。

詳細はDocumentation/vm/overcommit-accounting参照



[参考]
Documentation/filesystems/proc.txt


最終更新 2006/07/10 15:38:03 - kztomita
(2006/03/27 13:53:47 作成)


リンク
最近更新したページ
検索