# cat /proc/meminfo 
MemTotal:      1811384 kB     -MemTotal  : 전체 사용가능한 RAM (실제 물리적 메모리에서 커널 코드와 예약공간 제외)
MemFree:         20916 kB     -MemFree   : LowFree + HighFree
Buffers:        165244 kB     -Buffers   :
                                           buffer cache 메모리 크기 (2.6부터는 의미가 없어짐)
                                           Buffer cache는 원래 directory name 과 inode 정보등의 meta data를 cache하기
                                           위한 것이며 I/O 단위는 block size와 같다.Cached:        1086784 kB
                              -Cached    : Pagecache (disk cache) 메모리 크기에서 SwapCached가 빠진 크기.
                                           Pagecache는 file 의 내용을 cache하기 위한 것으로 I/O단위는 page size와 같다.
                                           SWAP공간으로의 page-in/out 또한 Pagecache를 통해 이루어지며
                                           Software MMU라고도 불리운다.
                                           커널 2.6에서 Buffer cache가 Pagecache로 통합이 되었다.

SwapCached:          4 kB     -SwapCached: 스왑-out되었다가 다시 스왑-in되었으나, 효율적인 I/O를 위하여
                                           아직 swap공간에 남아 있는 페이지를 지칭함.
                                           si = Disk-->Memory로 들어오는크기 so = Memory에서 Disk로(Swap) 된 크기
Active:        1039112 kB     -Active    : 최근에 사용된 메모리량. 일반적으로 절대적으로 필요하지 않으면 reclaim되지
                                           않는다.
Inactive:       641064 kB
HighTotal:     1065744 kB     -HighTotal  : HighMem 영역의 총 메모리량.
HighFree:         9048 kB                   HighMem영역은 물리적으로 860MB 이상의 가지고 있는 모든 메모리를 지칭한다.
                                            이 HighMem영역은 간접참조를 통하여 메모리의 접근이 이루어지며 Data Cache 등이
                                            이 영역을 사용한다.

LowTotal:       745640 kB     -LowTotal   : HighMem 영역을 제외한 나머지 메모리 부분
LowFree:         11868 kB     -LowFree    : LowMem영역의 Free 부분. 이 영역을 커널에서 직접 참조를 통하여 접근이 이
                                            루어지며 커널에서 사용하는 여러가지 자료 구조들이 바로 이 영역을 사용한다.
SwapTotal:     2096472 kB
SwapFree:      2096364 kB
Dirty:            1872 kB
Writeback:           0 kB
AnonPages:      428060 kB
Mapped:          46692 kB
Slab:            68244 kB
PageTables:       7476 kB
NFS_Unstable:        0 kB
Bounce:              0 kB
CommitLimit:   3002164 kB
Committed_AS:   907536 kB     -Commited_AS: 직역하면 할당해준(malloc등의 요청에 따라) 주소공간이 된다.
                                            현재의 워크로드(Workload)상에서 어느정도의 RAM 또는 SWAP 이 더 필요
                                            할지를 예측하여 Out of memory가 발생하지 않을 만한 메모리 량이다.
                                            SwapFree량 보다 이 값이 클경우 SWAP공간을 늘리는 것이 권장되나,
                                            Commited_AS의 값은 최악의 경우를 염두에 둔 값이다(99.9%의 확률)
VmallocTotal:   114680 kB
VmallocUsed:      4192 kB
VmallocChunk:   110092 kB

                              -Inact_dirty: Dirty라고 하면 "그 내용이 메모리상에서 변경되어 disk파일나 swap으로
                                            쓰일(flush write) 필요가 있는 경우"라고 이해하면 된다다.
                                            버퍼상에서 변경이 되었으나 I/O상의 효율을 위하여 바로 버퍼가 flush되
                                            지 않기 때문.  Inact_dirty로 지칭된 영역을 reclaim하기 위해서는 먼저
                                            disk flush가 선행되어야 한다.
                              -Inact_clean: 이 영역은 바로 커널에서 reclaim할 수 있다.  커널은 항상 어느정도 이
                                            러한 공간을 항상 유지하려 한다.
                              -Inact_target: 이지표를 통하여 커널은 가용할 수 있는 inactive page를 확보하려고
                                             한다.  이 지표를 초과하면 커널은 더이상의 page-out/swap-out 하려 하
                                             지 않게 된다.

출처 : http://oops.org/

 

또한 아래 자료를 참고 할 것.

Linux Memory Management or 'Why is there no free RAM?'

`what`

리눅스 메모리 이해

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다