Linux Proc meminfo: /proc/meminfo


리눅스 시스템 메모리 사용 상태: /proc/meminfo

'/proc/meminfo' 파일은 리눅스 시스템에서 메모리 사용 상태에 대한 정보를 제공하는 가상 파일입니다.   이 파일에는 메모리의 다양한 측면에 대한 상세한 정보가 포함되어 있으며, 시스템 관리자나 개발자가 시스템의 메모리 상태를 모니터링하거나 분석할 때 매우 유용합니다.   Red Hat Enterprise Linux 9 (RHEL 9)에서 '/proc/meminfo' 파일의 각 항목에 대한 자세한 설명을 아래에 제공합니다.
$ cat /proc/meminfo

📦 각 항목 설명

  • MemTotal: 7868332 kB 총 물리적 메모리 양을 나타냅니다. 시스템에 설치된 RAM의 총 용량입니다.
  • MemFree: 6753672 kB 현재 사용 가능한 여유 메모리 양을 나타냅니다. 사용되지 않고 즉시 사용할 수 있는 물리적 메모리의 양입니다.
  • MemAvailable: 7023968 kB 애플리케이션에서 새로 사용할 수 있는 메모리 양을 추정한 값입니다.
  • Buffers: 3308 kB 파일 시스템 메타데이터와 같이 디스크 I/O 작업에 사용되는 임시 저장 공간입니다.
  • Cached: 482048 kB 디스크 I/O 작업을 줄이기 위해 디스크에서 읽은 데이터를 메모리에 유지합니다.
  • SwapCached: 0 kB 스왑 공간에서 다시 읽은 메모리 페이지가 아직 다시 스왑되지 않고 메모리에 유지된 양입니다.
  • Active: 808588 kB 최근에 사용된 메모리 페이지의 양입니다. 이 메모리는 곧 사용될 가능성이 높기 때문에 스왑되지 않습니다.
  • Inactive: 84960 kB 최근에 사용되지 않은 메모리 페이지의 양입니다. 이 메모리는 필요할 때 스왑될 수 있습니다.
  • Active(anon): 423596 kB 익명 페이지(malloc) 중 최근에 사용된 메모리의 양입니다.
  • Inactive(anon): 0 kB 익명 페이지 중 최근에 사용되지 않은 메모리의 양입니다.
  • Active(file): 384992 kB 파일 시스템 페이지 중 최근에 사용된 메모리의 양입니다.
  • Inactive(file): 84960 kB 파일 시스템 페이지 중 최근에 사용되지 않은 메모리의 양입니다.
  • Unevictable: 0 kB 시스템에서 제거할 수 없는 메모리의 양입니다. 예를 들어, 잠금 페이지는 절대 스왑되지 않습니다.
  • Mlocked: 0 kB 잠금된 메모리의 양입니다. 이 메모리는 스왑 아웃되지 않습니다.
  • SwapTotal: 2097148 kB 스왑 공간의 총 용량입니다. 스왑 공간은 RAM이 부족할 때 사용하는 디스크 기반의 가상 메모리입니다.
  • SwapFree: 2097148 kB 현재 사용 가능한 스왑 공간의 양입니다.
  • Zswap: 0 kB
  • Zswapped: 0 kB
  • Dirty: 4 kB 디스크에 아직 기록되지 않은 메모리 페이지의 양입니다.
  • Writeback: 0 kB 디스크에 기록 중인 메모리 페이지의 양입니다.
  • AnonPages: 389960 kB 익명 메모리 페이지의 총 양입니다.
  • Mapped: 194176 kB 파일 매핑을 통해 사용된 메모리의 양입니다.
  • Shmem: 15404 kB 공유 메모리로 사용되는 메모리의 양입니다.
  • KReclaimable: 38224 kB 커널 코드 및 데이터가 사용하는 메모리 중 재사용 가능하거나 해제될 수 있는 메모리의 양입니다.
  • Slab: 92716 kB 커널 객체를 저장하는 데 사용되는 메모리의 양입니다.
  • SReclaimable: 38224 kB Slab 메모리 중에서 재사용 가능하거나 해제될 수 있는 부분입니다.
  • SUnreclaim: 54492 kB Slab 메모리 중에서 재사용할 수 없고, 해제할 수 없는 부분입니다.
  • KernelStack: 6416 kB 커널 스택이 사용하는 메모리의 양입니다.
  • PageTables: 10012 kB 페이지 테이블이 사용하는 메모리의 양입니다. 페이지 테이블은 가상 메모리 주소를 물리적 주소로 변환하는 데 사용됩니다.
  • SecPageTables: 0 kB
  • NFS_Unstable: 0 kB 아직 디스크에 안정적으로 기록되지 않은 NFS 서버에 대한 메모리 페이지의 양입니다.
  • Bounce: 0 kB 메모리 하위 시스템에서 I/O 장치와 메모리 간에 데이터를 전송하기 위해 사용하는 버퍼 메모리의 양입니다.
  • WritebackTmp: 0 kB 일시적인 기록 백에 사용되는 메모리의 양입니다.
  • CommitLimit: 6031312 kB 현재 시스템에서 허용하는 최대 커밋 가능한 메모리의 양입니다. 'CommitLimit = SwapTotal + MemTotal * overcommit_ratio'와 같이 계산됩니다.
  • Committed_AS: 2153232 kB 모든 프로세스가 할당받은 메모리의 양입니다. 실제로 사용된 메모리 양이 아니라, 커밋된 메모리의 합계입니다.
  • VmallocTotal:34359738367 kB 가상 메모리 영역에서 할당 가능한 총 메모리의 양입니다. 32TB
  • VmallocUsed: 25908 kB 현재 사용 중인 가상 메모리의 양입니다.
  • VmallocChunk: 0 kB 가상 메모리에서 가장 큰 연속된 사용 가능한 블록의 크기입니다.
  • Percpu: 2760 kB 프로세서별로 분할된 메모리의 양입니다.
  • HardwareCorrupted: 0 kB
  • AnonHugePages: 92160 kB
  • ShmemHugePages: 0 kB
  • ShmemPmdMapped: 0 kB
  • FileHugePages: 0 kB
  • FilePmdMapped: 0 kB
  • CmaTotal: 0 kB
  • CmaFree: 0 kB
  • Unaccepted: 0 kB
  • HugePages_Total: 0
  • HugePages_Free: 0
  • HugePages_Rsvd: 0
  • HugePages_Surp: 0
  • Hugepagesize: 2048 kB
  • Hugetlb: 0 kB
  • DirectMap4k: 137152 kB
  • DirectMap2M: 8251392 kB

⬛️ 요약
'/proc/meminfo'는 시스템의 메모리 상태를 다양한 관점에서 상세히 보여주는 정보 파일입니다.   이를 통해 시스템 메모리 사용량을 모니터링하고 최적화하는 데 중요한 정보를 얻을 수 있습니다.   각 항목은 시스템의 메모리 관리와 관련된 특정 측면을 나타내며, 시스템 성능 분석 및 문제 해결에 유용하게 사용될 수 있습니다.

📦 RssAnon, RssFile, RssShmem 3개 항목을 더하면 VmRSS가 나오나요?

'top' 명령에서 표시되는 메모리 관련 정보('MiB Mem'과 'MiB Swap')는 시스템의 메모리 사용 상태를 요약해서 보여줍니다.   이 값들은 '/proc/meminfo'에서 제공하는 세부 정보를 바탕으로 계산된 것입니다.   아래는 'top' 명령의 메모리 관련 항목과 '/proc/meminfo' 항목 간의 관계를 설명한 내용입니다.

top 명령 실행 예
'MemUsed = MemTotal - MemFree - Buffers - Cached'
'buff/cache = Buffers + Cached'
'SwapUsed = SwapTotal - SwapFree'

⬛️ 'MiB Mem' 항목과 '/proc/meminfo' 항목의 관계
  • 1. total
    - 'top'의 'MiB Mem total'은 시스템의 총 물리적 메모리 양을 나타냅니다.
    - '/proc/meminfo'의 'MemTotal' 항목에 해당합니다.
  • 2. free
    - 'top'의 'MiB Mem free'는 사용되지 않고 남아있는 물리적 메모리 양을 나타냅니다.
    - '/proc/meminfo'의 'MemFree' 항목에 해당합니다.
  • 3. used
    - 'top'의 'MiB Mem used'는 사용 중인 물리적 메모리 양을 나타냅니다.
    - 이는 '/proc/meminfo'의 'MemTotal'에서 'MemFree', 'Buffers', 'Cached'를 뺀 값으로 계산됩니다.
    - 공식: 'MemUsed = MemTotal - MemFree - Buffers - Cached'
  • 4. buff/cache
    - 'top'의 'MiB Mem buff/cache'는 버퍼와 캐시로 사용되는 메모리의 양을 나타냅니다.
    - '/proc/meminfo'의 'Buffers'와 'Cached' 항목의 합계에 해당합니다.
    - 공식: 'buff/cache = Buffers + Cached'
⬛️ 'MiB Swap' 항목과 '/proc/meminfo' 항목의 관계
  • 1. total
    - 'top'의 'MiB Swap total'은 스왑 영역의 총 용량을 나타냅니다.
    - '/proc/meminfo'의 'SwapTotal' 항목에 해당합니다.
  • 2. free
    - 'top'의 'MiB Swap free'는 사용되지 않고 남아있는 스왑 영역의 양을 나타냅니다.
    - '/proc/meminfo'의 'SwapFree' 항목에 해당합니다.
  • 3. used
    - 'top'의 'MiB Swap used'는 사용 중인 스왑 영역의 양을 나타냅니다.
    - '/proc/meminfo'의 'SwapTotal'에서 'SwapFree'를 뺀 값입니다.
    - 공식: 'SwapUsed = SwapTotal - SwapFree'
  • 4. avail Mem
    - 'top'의 'avail Mem'은 시스템에서 사용 가능한 메모리의 양을 나타냅니다.
    - '/proc/meminfo'의 'MemAvailable' 항목에 해당합니다.
    - 이 값은 'MemFree'와 'Buffers', 'Cached', 그리고 최근에 사용되지 않아 곧 해제될 가능성이 있는 메모리 등을 고려하여 계산된 값입니다.
⬛️ 요약
  • 'top'에서 보여주는 'MiB Mem' 및 'MiB Swap' 항목은 '/proc/meminfo'에서 제공하는 정보를 바탕으로 계산된 값입니다.
  • 'total', 'free', 'used', 'buff/cache', 'avail Mem' 등은 '/proc/meminfo'의 각 항목을 활용하여 사용자가 시스템 메모리 상태를 직관적으로 파악할 수 있게 해줍니다.
  • 이 정보를 통해 시스템의 메모리 리소스를 얼마나 효율적으로 사용하고 있는지, 스왑 공간이 얼마나 사용되고 있는지를 알 수 있습니다.

⚛ 설명 (chatgpt)


Email 답글이 올라오면 이메일로 알려드리겠습니다.