MemTotal | 사용 가능한 최대 메모리(RAM)량 ( Physical RAM - a few reserved bits - kernel binary code ) |
---|---|
MemFree | LowFree + HighFree |
MemShared | 호환성을 위하여 존재하는 필드로 항상 0(zero) |
Buffers | buffer cache 메모리 크기 (커널 2.6부터는 의미가 없다고 한다) Buffer cache는 원래 directory name 과 inode 정보등의 meta data를 cache하기 위한 것이며 I/O 단위는 block size 이다. |
Cached | Pagecache (disk cache) 메모리 크기에서 SwapCached가 빠진 크기. Pagecache는 file 의 내용을 cache하기 위한 것으로 I/O단위는 page size와 같다. SWAP공간으로의 page-in/out 또한 Pagecache를 통해 이루어지며 Software MMU라고도 불리운다. 커널 2.6에서 Buffer cache가 Pagecache로 통합이 되었다. |
SwapCache | 스와핑 아웃되었던 메모리로, 스와핑 인되었지만 여전히 스왑 파일에 존재하는 메모리 (메모리가 다시 필요하다면 이미 스왑파일에 존재하므로 또 다시 스와핑 아웃될 필요가 없음. 이는 I/O를 절약할 수 있음) |
Active | 가장 최근에 사용되었던 메모리로 완전히 불필요하지 않은 경우를 제외하고서는 빈공간으로 반환되지 않음 |
---|---|
Inact_dirty | 여기서 dirty의 의미는 “디스크나 스왑 공간으로 기록될 필요가 있음”을 의미하며, 빈 공간으로 반환되기 위해서는 몇가지 작업이 필요하다. 아직 기록되지 않은 파일이 예가 될 것이다. 너무 일찍 메모리에 기록하여 I/O의 성능을 떨어뜨릴 필요가 없기 때문이다. 예를 들어 log를 기록한다고 할 때 완벽한 로그가 구성될 때까지 디스크에 기록하지 않는 것이 성능에 도움이 된다. |
Inact_clean | 쉽게 빈 공간으로 반환될 수 있음을 의미한다. 커널은 항상 일정한 양의 빈 공간을 확보하고 있는데, 이는 움직일 수 있는 여유를 가지기 위함이다. |
Inact_target | 커널에서 inactive페이지가 충분히 보장되도록 하기 위한 목적으로 사용된다. 이것이 초과되었을때 커널은 페이지를 active에서 inactive로 이동시키기 위한 작업을 더이상 하지 않을 것이다. |
HighTotal | 상위 영역(high region)에 존재하는 메모리의 전체 양으로, Highmem은 physical RAM에서 대략 860MB 위의 메모리를 의미한다. 커널은 상위 영역의 메모리 메모리에 접근하기 위해 간접적인 트릭(indirect tricks)을 사용한다. 데이터 캐시가 이 메모리 영역에 포함될 수 있다. |
---|---|
LowTotal | 비상위메모리(non-highmem) 영역에 대한 총량 |
LowFree | 하위메모리 영역(low memory region)의 빈 공간. 커널이 직접적으로 접근할 수 있는 메모리 영역으로, 모든 커널 데이터구조(datastructures)가 이 메모리 영역에 저장된다. |
SwapTotal | 물리적인 스왑 메모리(physical swap memory)의 총량 |
SwapFree | 스왑 공간의 빈 영역의 총량 |
Committed_AS | 99.99%의 보장(이러한 부하에서는 OOM[Out of Memory]를 결코 발생시키지 않음)을 위해 필요로 하는 RAM의 추측값. 일반적인 상황에서는 커널이 메모리를 지나치게 낭비하는 경우이다. 즉, 1GB malloc를 사용한다고 할 때 실제적으로는 아무런 일도 발생하지 않는다. 단지 메모리를 실제로 사용하기 시작할 때 malloc에 의해 필요로 하는 메모리가 요구된다. 즉 저당을 잡히고 은행이 망하지 않기만을 바라는 상황이 된다. 또 다른 경우에는 mmap 파일을 이용해서 두 프로세스 간에 공유할 경우가 포함된다. Committed_AS는 최악의 상황에서 필요로 하는 RAM/swap의 추측값이다. |