검색 엔진의 방문이 늘어나고 있군...

Posted
Filed under 시스템
참조 원문 : Understanding free command in Linux/Unix
참조 원문 : Help! Linux ate my RAM!

  free 명령어의 출력 결과를 보면 버퍼와 캐시라는 것이 있습니다.
$ free
             total       used       free     shared    buffers     cached
Mem:       4042408    1463740    2578668          0     171752     693644
-/+ buffers/cache:     598344    3444064
Swap:      4190204          0    4190204
  대체 이 버퍼와 캐시가 무엇일까요? 그리고 두 번째 줄(-/+ buffers/cache)에 있는 값은 뭘까요? 먼저 첫 번째 줄부터 살펴보겠습니다.
  • 4042408 : 메모리(물리적인 RAM)의 총량.
  • 1463740 : 시스템에서 사용하고 있는 메모리(RAM)의 총량으로 버퍼와 캐시된 데이터의 크기까지 포함.
  • 2578668 : 남은 메모리의 총량.
  • 0 : 공유된 메모리. 이 칼럼은 더 이상 사용되지 않으며 향후에 사라질 예정.
  • 171752 : 응용 프로그램들에 의해 버퍼된 메모리의 총량.
  • 693644 : 향후를 위한 데이터 캐싱에 사용한 메모리의 총량.
  그렇다면 버퍼와 캐시의 차이가 대체 뭘까요? 버퍼는 응용 프로그램별로 존재하는 임시 데이터 저장 공간으로서 이 데이터는 다른 응용 프로그램이 사용하지 않습니다. 반면 캐시는 더 빠른 접근을 위해 자주 사용하는 데이터를 저장하는 메모리 공간입니다. 캐시는 여러 번 사용될 수 있지만 버퍼는 한 번만 사용합니다. 둘 모두 데이터 처리를 위한 임시 공간이라는 공통점이 있습니다.

  아래는 두 번째 줄에 있는 값의 의미입니다.
  • 598344 : 실제 사용 중인 메모리의 총량. 사용하고 있는 메모리의 총량에서 버퍼와 캐시에 사용하고 있는 양을 뺀 값. 1463740 - (171752 + 693644) = 598344.
  • 3444064 : 실제 남은 메모리의 총량. 메모리의 총량에서 실제 사용 중인 메모리의 총량(위의 값)을 뺀 값.
     4042408 - 598344 = 3444064
  리눅스는 사용하고 있지 않는 메모리를 빌려서 디스크 캐싱에 사용합니다. 만일 메모리의 여유 공간(첫 번째 줄의 세 번째 값)이 없는 상태에서 어떤 응용 프로그램이 메모리를 할당받으려고 하면 리눅스는 즉시 버퍼/캐시가 여유 부리며 빌린 공간을 빼서 그 응용 프로그램에게 할당해줍니다. 즉, 실제 여유 공간은 첫 번째 줄의 세 번째 값이 아니라 두 번째 줄의 두 번째 값입니다. 이에 대한 더 자세한 내용은 이곳을 참조하시기 바랍니다.


2013/07/15 22:20 2013/07/15 22:20