Skip to main content

/proc/meminfo 내용 분석 방법

소개

현재 사용중인 메모리 상태를 볼 수 있는 명령어와 각 항목에 설명을 기재해보려고 합니다.

명령어 실행

  1. free와 /proc/meminfo 의 결과확인
    •  free 결과

      $> free -m
                    total        used        free      shared  buff/cache   available
      Mem:          15786        7716         583         632        7487        7102
      Swap:          4095         516        3579

       

    • meminfo 파일 확인

      $> cat /proc/meminfo
      MemTotal:       16165732 kB
      MemFree:          596400 kB
      MemAvailable:    7271976 kB
      Buffers:           11120 kB
      Cached:          7050372 kB
      SwapCached:        24948 kB
      Active:          8539812 kB
      Inactive:        5451740 kB
      Active(anon):    5466632 kB
      Inactive(anon):  2113380 kB
      Active(file):    3073180 kB
      Inactive(file):  3338360 kB
      Unevictable:       19572 kB
      Mlocked:           19572 kB
      SwapTotal:       4194300 kB
      SwapFree:        3665916 kB
      Dirty:               100 kB
      Writeback:             0 kB
      AnonPages:       6935760 kB
      Mapped:           117016 kB
      Shmem:            647612 kB
      Slab:             736736 kB
      SReclaimable:     605232 kB
      SUnreclaim:       131504 kB
      KernelStack:        9568 kB
      PageTables:        48308 kB
      NFS_Unstable:          0 kB
      Bounce:                0 kB
      WritebackTmp:          0 kB
      CommitLimit:    12277164 kB
      Committed_AS:    9486816 kB
      VmallocTotal:   34359738367 kB
      VmallocUsed:      303816 kB
      VmallocChunk:   34358947836 kB
      Percpu:             3008 kB
      HardwareCorrupted:     0 kB
      AnonHugePages:   1742848 kB
      CmaTotal:              0 kB
      CmaFree:               0 kB
      HugePages_Total:       0
      HugePages_Free:        0
      HugePages_Rsvd:        0
      HugePages_Surp:        0
      Hugepagesize:       2048 kB
      DirectMap4k:       96400 kB
      DirectMap2M:     6094848 kB
      DirectMap1G:    10485760 kB

  2. 내용 설명
    • free 명령어 결과와 meminfo내용 비교
      freememinfo
      Mem: totalMemtotal
      MEM: usedMemTotal - MemFree
      Mem: freeMemFree
      Mem: shared(의미없음)매칭값없음
      Mem: buffersBuffers
      mem: cachedcached
      -/+ buffers/cache: used
      (Centos 66이하만 출력)
      MemTotal - (MemFree + Buffers + Cached)
      -/+ buffers/cache: free
      (Centos 66이하만 출력)
      MemFree + Buffers + Cached
      Swap: totalSwapTotal
      Swap: usedSwapTotal - SwapFree
      Swap: freeSwapFree
    • meminfo값 출력필드 설명
      필드값설  명출력OS
      MemTotal 사용가능한 총 메모리Centos5, 6, 7
      MemFree시스템에서 사용하지 않는 물리적 메모리양Centos5, 6, 7
      Buffers버퍼 캐시 메모리(디스크 블록의 임시저장위치)Centos5, 6, 7
      Cached페이지 캐시 메모리(디스크 캐시 및 공유메모리)Centos5, 6, 7
      Swapcached스왑파일시 사용하는 메모리(메인메모리에 존재)Centos5, 6, 7
      Memavailable새로운 app을 실행할때 스왑을 사용하지 않고 사용할 수 있는 메모리(근사치)Centos7이상
      Active비교적 최근에 사용된 메모리로, 스왑아웃 혹은 회수할 수 없는 메모리Centos5, 6, 7
      Inactive비교적 최근에 사용되지 않은 메모리로, 스왑아웃 또는 복구 할 수 있는 메모리Centos5, 6, 7
      Active(anon)비교적 최근에 사용된 익명 메모리Centos 6, 7
      Inactive(anon)비교적 사용되지 않고 스왑아웃할 수 있는 익명 메모리Centos 6, 7
      Active(file)비교적 최근에 사용되고 필요할때까지 회수되지 않는 페이지 캐시 메모리Centos 6, 7
      Inactive(file)성능에 영향주지 않고 회수할 수 있는 페이지 캐시 메모리Centos 6, 7
      Unevictable시스템 운영상 스왑아웃할 수 없는 메모리Centos 6, 7
      Mlock시스템 호출을 사용하게 메모리에 잠긴 페이지(Mlocked = Unevictable)Centos 6, 7
      SwapTotal사용가능한 총 스왑영역Centos5, 6, 7
      SwapFree사용가능한 총 스왑영역 잔여공간Centos5, 6, 7
      Dirty디스크에 다시 쓰여질때까지 기다리는 메모리Centos5, 6, 7
      Writeback디스크에 쓰기가 진행되는 메모리Centos5, 6, 7
      AnonPages사용자 공간 페이지에 매핑되어 있는 페이지 공간Centos5, 6, 7
      Mapped시스템 라이브러리과 같은 파일Centos5, 6, 7
      Slab커널 데이터 구조의 캐시 메모리Centos5, 6, 7
      PageTables페이지 테이블에 사용되는 메모리
      (많은 프로세스가 동일한 공유메모리 세그먼트에 연결되면 용량증가함)
      Centos5, 6, 7
      NFS_UnstableNFS서버로 전송은 되읐지만, 스토리지에 커밋되지 않는 페이지Centos5, 6, 7
      Bounce블록장비 버퍼에 사용되는 메모리Centos5, 6, 7
      CommitLimit

      커널 파라미터(vm.overcommit_ratio)을 기반으로 시스템에서 확보할 수 있는 총 메모리량

      해당 값이 2인 경우 유효

      Centos5, 6, 7
      Committed_AS현재 시스템에서 예약된 메모리 양Centos5, 6, 7
      VmallocTotalvmallokc 메모리 공간의 총 크기Centos5, 6, 7
      VmallocUsedvmalloc이 사용중인 공간Centos5, 6, 7
      VmallocChunkvmalloc영역의 최대 블록Centos5, 6, 7
      HugePages_Total커널 파라미터(vm.nr_hugepages)에 의해 확보된 hugepage 수Centos5, 6, 7
      HugePages_Free프로세스에 의해 확보되지 않은 hugepage 수Centos5, 6, 7
      HugePages_Rsvd풀에서 확보되었지만 예약되어 있지 않은 hugepage수Centos5, 6, 7
      Hugepagesizehugepage크기(x86dms 일반적으로 2MB)Centos5, 6, 7
      Shmem사용중인 공유메모리 총 공간Centos 6, 7
      SReclaimable회수 가능한 slab의 일부 (캐시)Centos 6, 7
      SUnreclaim메모리가 압박된 상태에서는 회수 할 수 없는 slab 영역Centos 6, 7
      KernelStack커널이 사용중인 메모리 (회수 불가)Centos 6, 7
      WritebackTmpFUSE가 버퍼로 사용중인 메모리Centos 6, 7
      HardwareCorrupted손상되거나 작동되지 않을때  커널이 식별한 메모리 용량Centos 6, 7
      AnonHugePages사용자 공간 페이지에 매핑된 파일이 없는 hugepageCentos 6, 7
      HugePages_Surp커널파라미터(vm.nr_hugepages)를 초과하는 hugepage수
      hugepage수는 (vm.nr_overcommit_hugepage)값에 의해 제어
      Centos 6, 7
      DirectMap4k표준 4k페이지에 매핑되는 메모리양Centos 6, 7
      DirectMap2Mhugepage에 매핑되는 메모리 양(일반적으로 2M)Centos 6, 7
    • page: 가상메모리를 특정 사이즈로 분할한 단위 (표준은 4K)
    • hugepage  : 일반 표준 페이징보다 더 큰 사이즈의 페이지가 large page 혹은 huge page, Oracle / Pgsql등 DBMS에서는
      해당 페이징을 활성화 하면 성능향상

reference