콘텐츠로 이동






Meminfo 내용 분석 방법

back

소개

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

명령어 실행

  1. 명령어 실행결과 확인 (free / meminfo)
  2. free 결과
    $> free -m
                   total        used        free      shared  buff/cache   available
    Mem:          15786        7716         583         632        7487        7102
    Swap:          4095         516        3579
    
  3. 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
    

  4. 내용 설명

  5. free 명령어 결과와 meminfo내용 비교

    free meminfo
    Mem: total Memtotal
    MEM: used MemTotal - MemFree
    Mem: free MemFree
    Mem: shared(의미없음) 매칭값없음
    Mem: buffers Buffers
    mem: cached cached
    -/+ buffers/cache: used (Centos 6이하만 출력) MemTotal - (MemFree + Buffers + Cached)
    -/+ buffers/cache: free (Centos 6이하만 출력) MemFree + Buffers + Cached
    Swap: total SwapTotal
    Swap: used SwapTotal - SwapFree
    Swap: free SwapFree
  6. 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_Unstable NFS서버로 전송은 되읐지만, 스토리지에 커밋되지 않는 페이지 Centos5, 6, 7
    Bounce 블록장비 버퍼에 사용되는 메모리 Centos5, 6, 7
    CommitLimit 해당 값이 2인 경우 유효 Centos5, 6, 7
    Committed_AS 현재 시스템에서 예약된 메모리 양 Centos5, 6, 7
    VmallocTotal vmallokc 메모리 공간의 총 크기 Centos5, 6, 7
    VmallocUsed vmalloc이 사용중인 공간 Centos5, 6, 7
    VmallocChunk vmalloc영역의 최대 블록 Centos5, 6, 7
    HugePages_Total 커널 파라미터(vm.nr_hugepages)에 의해 확보된 hugepage 수 Centos5, 6, 7
    HugePages_Free 프로세스에 의해 확보되지 않은 hugepage 수 Centos5, 6, 7
    HugePages_Rsvd 풀에서 확보되었지만 예약되어 있지 않은 hugepage수 Centos5, 6, 7
    Hugepagesize hugepage크기(x86dms 일반적으로 2MB) Centos5, 6, 7
    Shmem 사용중인 공유메모리 총 공간 Centos6, 7
    SReclaimable 회수 가능한 slab의 일부 (캐시) Centos6, 7
    SUnreclaim 메모리가 압박된 상태에서는 회수 할 수 없는 slab 영역 Centos6, 7
    KernelStack 커널이 사용중인 메모리 (회수 불가) Centos6, 7
    WritebackTmp FUSE가 버퍼로 사용중인 메모리 Centos6, 7
    HardwareCorrupted 손상되거나 작동되지 않을때 커널이 식별한 메모리 용량 Centos6, 7
    AnonHugePages 사용자 공간 페이지에 매핑된 파일이 없는 hugepage Centos6, 7
    HugePages_Surp 커널파라미터(vm.nr_hugepages)를 초과하는 hugepage수 hugepage수는 (vm.nr_overcommit_hugepage)값에 의해 제어 Centos6, 7
    DirectMap4k 표준 4k페이지에 매핑되는 메모리양 Centos6, 7
    DirectMap2M hugepage에 매핑되는 메모리 양(일반적으로 2M) Centos6, 7
  7. page: 가상메모리를 특정 사이즈로 분할한 단위 (표준은 4K)

  8. hugepage : 일반 표준 페이징보다 더 큰 사이즈의 페이지가 large page 혹은 huge page, Oracle / Pgsql등 DBMS에서는 해당 페이징을 활성화 하면 성능향상

reference