Linux 터미널에서 메모리 사용량을 확인하는 방법

0
1843
우분투 스타일 리눅스 시스템의 터미널 창.
Fatmawati Achmad Zaenuri / 셔터 스톡

Linux 시스템 내에서 메모리 사용량을 낮출 수있는 방법은 많이 있습니다. 이 자료에서는 가장 일반적으로 사용되는 명령 줄 방법을 다룹니다. free, vmstat, top. 우리는 또한 독서를 볼 것입니다 /proc/meminfo 직접.

리눅스가 RAM을 사용하는 방법

RAM은 응용 프로그램 및 데몬과 같은 모든 프로세스가 원하는 유한 리소스입니다. 사용할 수있는 것이 너무 많습니다. 커널은 메모리 스 쿼플을 참조하고 배분 된 모든 프로세스에 배분 된 메모리를 할당합니다. 마치 그녀가 애벌레보다 부리가 더 부끄러워지는 새와 같습니다.

사용되지 않은 RAM은 RAM을 낭비합니다. 리눅스는 파일 버퍼 공간과 같은 여분의 RAM을 사용하여 컴퓨터가 최적의 성능으로 실행되도록합니다. 런 어웨이 프로세스 나 메모리 누수로 인해 시스템의 RAM이 사용되었다는 인상을 쉽게받을 수 있지만, 실제로는 그렇지 않습니다.

일반적으로 커널은 백그라운드에서 열심히 일하고 있습니다. 커널이 자체 장치를 위해 밀렵을 낸 RAM에 대한 다른 요구 사항이 있으면 즉시 메모리를 포기하므로 ​​아무런 해가 없습니다.

커널이 스왑 공간을 사용하는 것이 더 효율적이라고 결정하면이를 스왑 공간으로 가져옵니다. 에 대해 많은 혼란이 있습니다 swappiness 리눅스에서의 값과 커널이 스왑을 사용하기 시작할 때. 사실이 아닙니다 swappiness value는 스왑을 활성화하는 RAM 사용 임계 값을 설정합니다.

그러나 이제 터미널 창에서 사용할 수있는 다양한 기술을 살펴보고 Linux 컴퓨터의 RAM 사용량을 살펴 보겠습니다.

자유로운 명령

free 명령은 컴퓨터에서 사용 된, 사용 가능한, 공유, 버퍼 / 캐시 및 사용 가능한 총 RAM의 테이블을 제공합니다. 또한 구성된 총 스왑 공간 크기와 사용 및 사용 가능한 양을 보여줍니다.

이 예에서는 -m (mebibytes) 옵션. 그러나, 당신은 또한 사용할 수 있습니다 -b (바이트) -k (kibibytes) 또는 -g (기가 바이트).

다음 명령을 입력합니다 :

free -m

터미널 창의 "free -m"명령

이것이 우리가 얻는 결과입니다.

      total used free shared buff/cache available
Mem:   1987  901   95     80        990       811
Swap: 1521   651  869

그만큼 Mem 열에는 다음 정보가 포함됩니다.

  • 합계:이 컴퓨터의 총 실제 RAM 크기.
  • 익숙한: 총량에서 Free + Buffers + Cache의 합을 뺍니다.
  • 비어 있는: 사용되지 않은 메모리의 양입니다.
  • 공유: 사용되는 메모리 양 tmpfs 파일 시스템.
  • 버프 / 캐시: 버퍼 및 캐시에 사용되는 메모리 양. 필요한 경우 커널에서 신속하게 해제 할 수 있습니다.
  • 유효한: 컴퓨터의 애플리케이션 및 기타 운영 소프트웨어의 메모리 요청을 처리하는 데 사용할 수있는 메모리의 추정치입니다.

그만큼 Swap 열에는 다음 정보가 포함됩니다.

  • 합계: 스왑 파티션 또는 파일의 크기입니다.
  • 익숙한: 사용중인 스왑 공간의 양입니다.
  • 비어 있는: 남은 (사용되지 않은) 스왑 공간의 양입니다.

또한 독자 중 한 명이 조정 한 다음과 같은 멋진 트릭을 사용하여 사용 된 스왑 공간의 백분율을 확인할 수 있습니다.

free -m | grep Swap | awk '{print ($3/$2)*100}'

그만큼

관련 : Linux에서 무료 명령을 사용하는 방법

vmstat 명령

스왑 공간의 상태를 인식하지 않고 Linux 상자에서 RAM이 사용되는 방식을 잘 이해하는 것은 불가능합니다. RAM과 스왑 공간은 서로 밀접하게 작동합니다.

당신은 사용할 수 있습니다 vmstat 스왑 공간 (또는 가상 메모리)을 어떻게 사용하고 있는지 자세히 알아보십시오. 마지막 재부팅 이후 평균값을 기반으로 다양한 스왑 관련 통계에 대한 보고서를 제공합니다.

다음을 입력하십시오.

vmstat

터미널 창의 "vmstat"명령

이것은 랩 어라운드가없는 출력입니다.

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b    swpd    free  buff   cache   si  so    bi   bo    in   cs  us sy id wa st
3 0  671488  576084  51088  823876   1   7    53   62    99   14   4  1 95  0  0

이 보고서에는 많은 데이터 요소가 있으므로 다음과 같이 세분화합니다.

  • 절차 :

    • 아르 자형:“실행 가능한”프로세스 수. 다음 번 슬라이스 된 CPU주기 버스트를 실행 중이거나 대기 중입니다.
    • : 무정전 수면 상태의 프로세스 수. 이들은 잠을 자지 않고 차단 시스템 호출을 수행합니다. 현재 작업을 완료 할 때까지 중단 할 수 없습니다. 일반적으로이 프로세스는 일부 리소스가 비어 있기를 기다리는 장치 드라이버입니다. 해당 프로세스의 대기중인 인터럽트는 프로세스가 일반적인 활동을 재개 할 때 처리됩니다.
  • 기억:

    • swpd: 사용 된 가상 메모리의 양, 즉 스왑 아웃 된 메모리의 양
    • 비어 있는: 유휴 (사용하지 않은) 메모리의 양입니다.
    • 버프: 버퍼로 사용 된 메모리의 양.
    • 은닉처: 캐시로 사용 된 메모리의 양.
  • 교환:

    • : 스왑 공간에서 스왑 된 가상 메모리의 양.
    • 그래서: 스왑 공간으로 스왑 아웃 된 가상 메모리의 양.
  • IO :

    • 바이: Blocks in. 가상 메모리를 다시 RAM으로 교체하는 데 사용되는 데이터 블록 수입니다.
    • : 차단합니다. RAM에서 스왑 공간으로 가상 메모리를 스왑하는 데 사용되는 데이터 블록 수
  • 체계:

    • : 클럭을 포함한 초당 인터럽트 수입니다.
    • cs: 초당 컨텍스트 전환 수입니다. 컨텍스트 전환은 커널이 시스템에서 사용자 모드 처리로 교체 될 때입니다.
  • CPU : 이 값은 모두 총 CPU 시간의 백분율입니다.

    • 우리: 사용자 (커널이 아닌) 코드를 실행하는 데 소요 된 시간입니다.
    • 싸이: 커널 코드를 실행하는 데 소요 된 시간입니다.
    • 신분증: 유휴 시간.
    • wa: 입력 또는 출력을 기다리는 데 소요 된 시간입니다.
    • : 가상 머신이 하이퍼 바이저가 다른 가상 머신에 대한 서비스를 마치고이 가상 머신으로 돌아 오기 전에 대기해야하는 시간.

관련 : Linux에서 vmstat 명령을 사용하는 방법

최고 사령부

그만큼 top 명령은 정보가 가득한 화면을 표시합니다. 값은 몇 초마다 업데이트됩니다.

사용하려면 다음을 입력하십시오.

top

터미널 창의 "top"명령

“e”키를 눌렀습니다. 이것은 디스플레이를 메가 바이트로 변경하여 바이트를 나타내는 긴 문자열보다 시각적으로 구문 분석하기가 더 쉽습니다. 화면 상단에는 5 줄의 정보가 있고 하단에는 데이터 열이있는 하단 창이 있습니다.

각 라인에서 찾을 수있는 정보는 다음과 같습니다.

  • 1 행 : 시간, 컴퓨터 실행 시간, 로그인 한 사람 수 및 지난 1, 5, 15 분 동안의 평균로드 시간
  • 두 번째 줄 : 작업 수 및 상태 : 실행, 중지, 절전 또는 좀비
  • 세 번째 줄 : CPU 정보 (아래 필드 분석 참조).
  • 네 번째 줄 : 총 실제 메모리 양과 사용 가능, 사용, 버퍼 또는 캐시 된 양.
  • 5 행 : 스왑 메모리의 총량 및 사용 가능, 사용 가능 및 사용 가능한 총 용량 (캐시에서 복구 가능한 메모리를 고려).

3 행의 CPU 필드는 다음과 같습니다.

  • 우리: CPU가 사용자 공간에서 사용자를 위해 프로세스를 실행하는 데 소요되는 시간입니다.
  • sy : CPU가 시스템 “커널 공간”프로세스를 실행하는 데 소요 된 시간입니다.
  • ni : CPU가 수동으로 설정 한 값으로 프로세스를 실행하는 데 소요 된 시간입니다.
  • 신분증: CPU 유휴 시간
  • wa : CPU가 I / O가 완료되기를 기다리는 시간.
  • 안녕: CPU가 하드웨어 인터럽트를 처리하는 데 소요 된 시간입니다.
  • 시: CPU가 소프트웨어 인터럽트를 처리하는 데 소요 된 시간입니다.
  • st (도둑질 시간) : 가상 머신 실행으로 인해 CPU가 손실 된 시간입니다.

모든 열을 보려면 왼쪽 또는 오른쪽 화살표 키를 눌러야 할 수도 있습니다. 각 열의 값은 다음과 같습니다.

  • PID : 프로세스 ID.
  • 사용자: 프로세스 소유자의 이름
  • PR : 프로세스 우선 순위.
  • NI : 프로세스의 좋은 가치.
  • 좋은 : 프로세스가 사용하는 가상 메모리.
  • RES : 프로세스에서 사용 된 상주 메모리
  • SHR : 프로세스에서 사용하는 공유 메모리
  • 에스: 프로세스 상태. 아래에서이 필드에 사용할 수있는 값 목록을 참조하십시오.
  • % CPU : 마지막 업데이트 이후 프로세스에서 사용한 CPU 시간의 비율입니다.
  • % MEM : 사용 된 실제 메모리의 비율입니다.
  • 시간 + : 작업에서 사용한 총 CPU 시간은 100 초입니다.
  • 명령: 명령 이름 또는 줄 (이름 + 옵션). (이 열은 위 이미지의 오른쪽에 화면이 없습니다.)

에 표시된 상태 S 열은 다음 중 하나 일 수 있습니다.

  • 디: 무정전 수면.
  • 아르 자형: 달리는.
  • 에스: 자요
  • 티: 추적 됨 (중지됨)
  • 지: 좀비.

종료하려면 Q를 누르십시오 top.

/ proc / meminfo 읽기

메모리 통계를보고하는 Linux의 많은 도구 (그리고 아마도 대부분)는 의사 파일 시스템에서 정보를 검색합니다. /proc/meminfo. 우리는 사용할 수 있습니다 cat 또는 less 같은 명령을 수행합니다.

우리는 다음을 입력합니다 :

less /proc/meminfo

터미널 창에서 "less / proc / meminfo"명령

실행중인 커널 및 CPU 아키텍처에 따라 다른 필드가 표시 될 수 있습니다. 가상 머신에서 다음 결과를 얻었습니다.

MemTotal:          2035260 kB
MemFree:            919064 kB
MemAvailable:      1300932 kB
Buffers:             33528 kB
Cached:             457604 kB
SwapCached:          29732 kB
Active:             313360 kB
Inactive:           603276 kB
Active(anon):        74648 kB
Inactive(anon):     355004 kB
Active(file):       238712 kB
Inactive(file):     248272 kB
Unevictable:            16 kB
Mlocked:                16 kB
SwapTotal:         1557568 kB
SwapFree:           873024 kB
Dirty:                  80 kB
Writeback:               0 kB
AnonPages:          414100 kB
Mapped:              97436 kB
Shmem:                4148 kB
KReclaimable:        52932 kB
Slab:                94216 kB
SReclaimable:        52932 kB
SUnreclaim:          41284 kB
KernelStack:          9280 kB
PageTables:          45264 kB
NFS_Unstable:            0 kB
Bounce:                  0 kB
WritebackTmp:            0 kB
CommitLimit:       2575196 kB
Committed_AS:      5072192 kB
VmallocTotal:  34359738367 kB
VmallocUsed:         35712 kB
VmallocChunk:            0 kB
Percpu:                720 kB
HardwareCorrupted:       0 kB
AnonHugePages:           0 kB
ShmemHugePages:          0 kB
ShmemPmdMapped:          0 kB
CmaTotal:                0 kB
CmaFree:                 0 kB
HugePages_Total:         0
HugePages_Free:          0
HugePages_Rsvd:          0
HugePages_Surp:          0
Hugepagesize:         2048 kB
Hugetlb:                 0 kB
DirectMap4k:        180160 kB
DirectMap2M:       1916928 kB

달리 명시되지 않는 한 모든 크기는 킬로바이트 단위입니다. 다음은 컴퓨터의 구성 및 하드웨어에 따라 다른 것들과 함께 의미하는 바입니다.

  • MemTotal : 사용 가능한 총 RAM (일부 예약 된 비트 및 커널 이진 코드는 제외).
  • 멤 프리 : 의 합 LowFree+HighFree. 현재 사용 가능한 RAM의 양
  • 사용 가능 : 스왑하지 않고 새 응용 프로그램을 시작하는 데 사용할 수있는 예상 메모리입니다.
  • 버퍼 : 원시 디스크 블록을위한 임시 저장소. 이렇게하면 하드 드라이브 입출력이 줄어 듭니다. 또한 이미 메모리에 있으므로 동일한 데이터에 대한 후속 요청에 대한 액세스 속도를 높입니다.
  • 캐시 : 캐시 된 페이지는 하드 드라이브의 파일에서 읽습니다 (포함되지 않음) SwapCached).
  • 스왑 캐시 : 스왑 아웃 된 메모리와 스왑 공간에 사본이 남아 있습니다.
  • 유효한: 최근에 사용한 메모리 꼭 필요한 경우가 아니면 회수하지 않습니다.
  • 비활성 : 사용되었지만 가장 최근에 사용되지 않은 메모리 교정의 가능성이 높습니다.
  • 활성 (anon) : 에 생성 된 파일에 할당 된 메모리 tmpfs 의사 파일 시스템. 익명 파일은 하드 드라이브에 없습니다.
  • 비활성 (anon) : 익명의 금액, tmpfs, shmem 퇴거의 대상이되는 기억 (기억 교정).
  • 활성 (파일) : 사용 중이거나 이전 메모리 교정주기 이후에 사용 된 파일 캐시 메모리의 양입니다.
  • 비활성 (파일) : 교정 대상인 하드 드라이브에서 읽은 파일 캐시 메모리의 양입니다.
  • 피할 수없는 : 제거 할 수 있어야하지만 사용자 공간 프로세스에 의해 메모리에 잠겨 있지 않기 때문에 메모리 양입니다.
  • 가려진 것 : 사용자 공간 프로세스에 의해 잠겨 있기 때문에 제거 할 수없는 총 메모리 양입니다.
  • 합계 : 사용자 공간 프로그램 및 페이지 캐시에서 사용하는 총 HighMem입니다. 커널은이 메모리 영역에 액세스 할 수 있지만 LowMem보다 액세스 속도가 느립니다.
  • HighFree : 무료 HighMem의 금액입니다.
  • 총계 : LowMem의 양으로, HighMem과 동일한 용도로 사용 가능하지만 커널이 자체 목적으로 사용할 수도 있습니다.
  • 낮음 : 무료 LowMem의 금액입니다.
  • MmapCopy : 파일 데이터에 매핑 된 메모리 양
  • 스왑 토탈 : 사용 가능한 총 스왑 공간
  • 스왑 프리 : 현재 사용되지 않은 스왑 공간입니다.
  • 더러운: 디스크에 다시 쓰기를 기다리는 메모리의 양입니다.
  • 다시 쓰기: 메모리가 디스크에 능동적으로 다시 쓰여지고 있습니다.
  • AnonPages : 파일 공간이 아닌 페이지는 사용자 공간 페이지 테이블에 맵핑됩니다.
  • 매핑 됨 : 메모리에 매핑 된 파일 (예 : 라이브러리)
  • me : 소비 된 메모리 양 tmpfs 의사 파일 시스템.
  • KReclaimable : 커널 메모리 할당 커널은 메모리에 대한 수요가 충분할 경우 회수를 시도합니다.
  • 투수판: 커널 내부 데이터 구조 캐시.
  • 회수 가능 : 금액 Slab 캐시와 같이 회수 될 수있는 메모리.
  • 선포 : 금액 Slab 되 찾을 수없는 기억.
  • 커널 스택 : 커널 스택에 할당 된 메모리 양.
  • PageTables : 가장 낮은 수준의 페이지 테이블 전용 메모리 양입니다.
  • 퀵리스트 : 페이지 테이블의 할당 및 삭제는 매우 빈번한 작업이므로 가능한 빨리 처리하는 것이 중요합니다. 따라서 페이지 테이블에 사용 된 페이지는“quicklists”라는 여러 다른 목록으로 캐시됩니다.
  • NFS_ 불안정 : 서버가 받았지만 아직 비 휘발성 저장소에 쓰지 않은 NFS (Network File System) 페이지.
  • 되튐: 블록 장치 바운스 버퍼에 사용되는 메모리. 바운스 버퍼는 장치가 직접 액세스 할 수있을 정도로 메모리가 부족한 위치에 있습니다. 그런 다음 데이터가 HighMem의 원하는 사용자 페이지로 복사됩니다.
  • WritebackTmp : 임시 쓰기-백 버퍼를 위해 사용자 공간의 파일 시스템 (FUSE)에서 사용하는 메모리.
  • CommitLimit : 시스템에서 현재 할당 할 수있는 총 메모리 양입니다.
  • 커밋 된 _AS : 모든 현재 요구를 충족시키는 것으로 추정되는 메모리 양. 프로그램이 일부 RAM을 요청하면 요청이 기록되지만 프로그램이 RAM을 사용하기 시작하면 RAM이 할당됩니다. 또한 프로그램이 예약 한 최대 금액까지 필요한만큼만 할당됩니다. 실제로 전달할 수있는 것보다 더 많은 메모리를 “할당”할 수 있습니다. 모든 프로그램이 RAM 칩을 한 번에 현금화하려고하면 메모리 카지노가 파열 될 수 있습니다 (스왑 공간 금융가에게 손을 떼야합니다).
  • VmallocTotal : vmalloc 메모리 영역의 총 크기
  • 사용 된 : 사용 된 vmalloc 영역의 양입니다. Linux 4.4부터이 필드는 더 이상 계산되지 않으며 하드 코딩됩니다.
  • VmallocChunk : 사용 가능한 vmalloc 영역의 가장 큰 연속 블록.
  • 하드웨어 손상 : 물리적 메모리 손상 문제가있는 것으로 태그 된 메모리 양. 할당되지 않습니다.
  • 게으른 무료 : 메모리 용량 MADV_FREE 상태. 응용 프로그램이 MADV_FREE 페이지 범위에 깃발을 표시합니다. 더 이상 필요하지 않으며 이제 교정 후보입니다. 메모리가 필요할 때까지 실제 교정이 지연 될 수 있습니다. 애플리케이션이 페이지 쓰기를 시작하면 교정을 취소 할 수 있습니다.
  • AnonHugePages : 파일이 아닌 백업 된 대용량 페이지가 사용자 공간 페이지 테이블에 매핑되었습니다. 파일이 아닌 백업 페이지는 하드 드라이브 파일에서 가져 오지 않았습니다.
  • ShmemHugePages : 공유 메모리에 사용되는 메모리 양 (shmem) 및 의사 파일 시스템 (tmpfs)가 큰 페이지로 할당되었습니다.
  • 매핑 된 : 거대한 페이지를 가진 사용자 공간에 매핑 된 공유 메모리의 양.
  • CmaTotal : CMA (Continuous Memory Allocator) 페이지의 양입니다. 이들은 인접한 메모리 영역과 만 통신 할 수있는 장치에서 사용됩니다.
  • CmaFree : 사용 가능한 CMA (Continuous Memory Allocator) 페이지의 양입니다.
  • HugePages_Total : 거대한 페이지 풀 크기.
  • HugePages_Free : 풀에서 할당되지 않은 대용량 페이지 수
  • HugePages_Rsvd : 예약 된 대용량 페이지 수 할당하겠다는 약속은했지만 아직 할당되지 않았습니다.
  • HugePages_Surp : 정의 된 시스템 값보다 큰 풀의 대용량 페이지 수
  • 거대한 페이지 크기 : 거대한 페이지의 크기.
  • DirectMap4k : 4KB 페이지에 매핑 된 RAM 바이트 수입니다.
  • DirectMap4M : 4MB 페이지에 매핑 된 RAM 바이트 수입니다.
  • DirectMap2M : 2MB 페이지에 매핑 된 RAM 바이트 수입니다.
  • DirectMap1G : 2GB 페이지에 매핑 된 RAM 바이트 수입니다.

일반적인 Linux와 마찬가지로 빠른 개요를 얻는 방법에는 여러 가지가 있으며 항상 세부 사항을 자세히 살펴볼 수있는 최소한 한 가지 방법이 있습니다.

아마도 free, top, vmstate 정기적으로 /proc/meminfo 특정 문제를 조사하기 위해 심층 다이빙을해야하는 경우를 대비하여