메모리 사용량과 여유량 그리고 캐싱으로 사용되는 메모리가 얼마나 있는지 파악
note) free 명령어는 리눅스 /proc/meminfo에서 메모리 정보를 가져온다 (cat proc/meminfo 로 확인 가능)
free [OPTIONS]
free :
free -h : in human-readable format
- [total] : 설치된 총 메모리 크기 / 설정된 스왑 총 크기
- [used] : total에서 free, buff/cache를 뺀 사용중인 메모리. / 사용중인 스왑 크기
- [free] : total에서 used와 buff/cahce를 뺀 실제 사용 가능한 여유 있는 메모리량 / 사용되지 않은 스왑 크기
- [shared] : tmpfs(메모리 파일 시스템), ramfs 등으로 사용되는 메모리. 여러 프로세스에서 사용할 수 있는 공유 메모리
- [buffers] : 커널 버퍼로 사용중인 메모리
- [cache] : 페이지 캐시와 slab으로 사용중인 메모리
- [buff/cache] : 버퍼와 캐시를 더한 사용중인 메모리
- [available] : swapping 없이 새로운 프로세스에서 할당 가능한 메모리의 예상 크기. (예전의 -/+ buffers/cache이 사라지고 새로 생긴 컬럼)
옵션
- -b, --bytes : Display output in bytes.
- -k, --kilo : Display output in kilobytes (1KiB = 1024bytes). This is the default unit.
- -m --mega : Display output in megabytes.
- -g, --giga : Display output in gigabytes.
- --tera : Display output in terabytes.
- --peta : Display output in petabytes.
- -w : 와이드 모드로 cache와 buffers를 따로 출력한다.
- -s '초'] : 지정한 초 만큼 딜레이를 두고 지속적으로 실행한다
캐시(Cache)와 버퍼(Buffer)의 차이점
Buffer : 버퍼 캐시로 디바이스 블록에 대한 메타데이터 (블록 디바이스로부터 데이터를 읽어오기 위해 필요한 정보 ) 들을 메모리에 캐싱
Cache : 페이지 캐시와 slab으로 사용중인 메모리 크기
페이지 캐시 : 한 번 디스크에서 읽어온 데이터를 메모리에 저장하여 같은 데이터를 다시 읽을 때 디스크로 요청하지 않고 메모리에서 바로 읽어온다.
slab : 커널에서 관리하는 커널 오브젝트를 저장하는 단위로, 커널은 애플리케이션 할당 단위인 페이지 보다 작은 단위인 slab 단위로 메모리를 사용
스왑(swap) 메모리
디스크의 일정 부분을 메모리 공간 부족시 메모리처럼 사용하기 위해 설정해둔 공간.
커널은 메모리가 부족한 상황에서는 Buffer와 Cache로 할당된 것 중에 자주 사용 되지 않는 것들을 비우고 메모리에 할당을 하려고 시도히고, 메모리에 있는 데이터 중 최근 자주 사용되지 않은 데이터를 SWAP 공간으로 이동시킴 SWAP-OUT)
SWAP으로 옮겨진 데이터를 프로세스가 읽기 위해 메모리로 데이터를 다시 가져옴 (SWAP-IN) : latency 가 길어져서 성능저하로 아어짐.
메모리 부족으로 인해 SWAP이 커지는 경우는 메모리 증설을 고려
'Ubuntu > linux Command' 카테고리의 다른 글
Linux System Command (awk) (0) | 2021.08.16 |
---|---|
Linux System Command ( kill ) (0) | 2021.08.16 |
Linux System Command (top) (0) | 2021.08.12 |
Linux System Command (crontab) (0) | 2021.08.12 |
Linux Basic Command (rename) - 파일명 변경 (0) | 2021.08.12 |