free

 

리눅스 명령어 free는 시스템에서 사용중인 메모리와 사용하지 않는 메모리, 스왑 메모리 등의 전체적인 메모리 현황을 확인하는 명령어다. 또한 커널에 의해 사용된 공유 메모리와 버퍼 정보도 출력한다. 실제 free 명령어는 리눅스  /proc/meminfo 에서 메모리 정보를 가져와 보여준다. 명령어 위치는 /usr/bin/free에 있다.

 

(# free -g) 명령어 확인

 

  • Mem : 시스템의 물리적인 메모리에 대한 사용량을 각 필드로 표시
  • Swap : 스왑이라는 특정 메모리영역에 대한 사용량을 각 필드로 표시
  • total : 전체 메모리의 용량을 Kbyte단위(기본단위)로 표시
  • used : 현재 시스템에서 사용중인 메모리의 양을 Kbyte 단위로 표시
  • free : 현재 시스템에서 사용하지 않는 메모리의 양을 Kbyte로 표시
  • shared : 현재 시스템에서 공유한 메모리의 용량을 표시
  • buff/cache : 현재 캐시메모리에서 버퍼링된 사용량을 표시
  • available : swapping 없이 새로운 프로세스에서 할당 가능한 메모리의 예상 크기. (예전의 -/+ buffers/cache이 사라지고 새로 생긴 컬럼)

옵션

  • [-b | -k | -m | -g] : 메모리 단위를 바이트, 키로바이트, 메가바이트, 기가바이트로 표시
  • [-t] : 총계(total)가 포함된 줄을 출력
  • [-o] : 버퍼에 조정된 줄의 출력을 비활성화
  • [-s] : 지정된 마다 출력함, 를 지정할때는 부동 소수점으로 지정가능
  • [-l] : 최고/최저 메모리  상황을 구분하여 출력
  • [-V]free 명령어의 버전 정보를 출력

Cache와 Buffer

 

리눅스는 항상 여유 메모리 공간을 Buffer와 Cache로 사용하려고 시도합니다. 메모리에 데이터를 저장해서 느린 디스크로의 접근을 최대한 줄여 성능을 향상 시킵니다.

 

Buffer는 버퍼 캐시로 디바이스 블록에 대한 메타데이터들을 메모리에 캐싱한 크기입니다. 블록 디바이스로부터 데이터를 읽어오기 위해 필요한 정보들을 메모리에 저장해 둡니다.

 

Cache는 페이지 캐시와 slab으로 사용중인 메모리 크기입니다.

 

 

 

SWAP

 

 스왑은 디스크의 일정 부분을 메모리 공간 부족시 메모리처럼 사용하기 위해 설정해둔 공간입니다.

 

커널은 메모리가 부족한 상황에서는 Buffer와 Cache로 할당된 것 중에 자주 사용 되지 않는 것들을 비우고 메모리에 할당을 하려고 시도합니다. 또한 메모리에 있는 데이터 중 최근 자주 사용되지 않은 데이터를 SWAP 공간으로 이동시킵니다.(SWAP-OUT)

 

그리고 SWAP으로 옮겨진 데이터를 프로세스가 읽기 위해 메모리로 데이터를 다시 가져옵니다.(SWAP-IN) 이는 디스크로부터 옮겨 졌던 데이터를 다시 메모리로 가져오기 때문에 레이턴시가 길어져 결국 성능 저하로 이어집니다.

 

일시적인 메모리 사용 증가로 일정 SWAP을 사용하는 상황과 지속적인 메모리 부족으로 인해 SWAP이 커지는 경우를 지속적으로 모니터링 하여 메모리 증설 시점을 고려해야 합니다.

 

 

'리눅스 ( Linux ) > 리눅스 명령어' 카테고리의 다른 글

[리눅스] mtime 명령어 활용  (0) 2020.04.13
[리눅스] find 명령어  (0) 2020.04.13
리눅스 기본명령어/자주쓰는 명령어  (0) 2020.03.17
메타 문자  (0) 2017.01.15
cp 명령어  (0) 2017.01.15
복사했습니다!