(10101101)173/UNIX2009. 6. 17. 16:13
free명령어는 메모리상태를 종합적으로 확인이 가능한 명령어 입니다. free명령어를 통해 알아보는 정보는
* 메모리(RAM)의 전체용량
* 메모리의 사용중인 용량
* 메모리의 사용가능 용량
* 커널에서 사용되는 공유메모리 용량
* 커널에서 사용되는 버퍼에 용량
* 스왑(SWAP)메모리의 용량
* 캐쉬된 메모리의 용량
* 캐쉬 가능한 메모리의 용량

우선 free명령어는 기본적으로 메모리, 캐쉬, 스왑에 정보를 보여주게 됩니다.

[그림 1. free]

그림 1에서 보면 용량 단위는 KB단위로 보입니다.  이는 free명령에 -k옵션을 준 결과와 동일합니다. free명령의 결과를 -b, -k, -m, -g 옵션을 사용해 용량별로 확인이 가능합니다. 인간이라면 당연하게도 저 숫자들을 더하고 싶어집니다. 그럴때 사용하는 옵션이 바로 -t옵션입니다.

[그림 2. free -t]

-t 옵션을 사용하게 되면 Mem과 Swap행의 용량을 더하게 됩니다. -/+ buffers/cache행은 제외하게 됩니다. Mem은 순수하게 RAM의 용량이고 Swap은 설치시에 설정한 값을 말합니다. Swap은 윈도우에서 말하는 가상메모리와 같은것으로 하드디스크 공간을 설정한 만큼 잡아두고 RAM처럼 사용하는 부분입니다. 여기서 드는 의문는 -/+ buffers/cashe부분은 왜 Total값에 들어가지 않는가 라는 의문의 발생합니다. 그리고 하는것도 없어 보이는대 메모리 전체 용량(773,724KB)중 757,764KB를 사용한다고 보입니다. 사실 이는 리눅스의 운영체제적 입장에서 사용되는 메모리로 리눅스가 메모리를 효율적으로 사용하기 위해 미리 전체 메모리상에서 buffers + cache만큼의 메모리를 할당하게 됩니다. 이중중 메모리가 필요하게 될 경우 cached에 할당된 메모리를 넘겨주게 됩니다. 그래서 buffers와 cache를 더해보면 319,692 + 454,032 = 773,724 결국 메모리의 전체 용량과 같음을 확인하실 수 있습니다. 때문에 실질적으로 메모리에서 사용하고 있는 용량은 304MB(319,692)이고 남은 용량은 432MB(454,032) 입니다. 다시 432MB는 리눅스가 할당하여 사용하고 있는 상태입니다. 다른 옵션을 알아보겠습니다.

-o 옵션은 -/+ buffers/cache라인을 보여주지 않습니다.

[그림 3. -o : -/+ buffers/cache]

-l옵션은 High memory와 Low memory 정보까지 좀더 많은 결과를 보여줍니다.

[그림 4. -l High, Low memory]

-s 옵션은 뒤에 추가적으로 지정한 시간만큼 free명령을 반복해 주고 -c 옵션은 추가적으로 지정한 만큼 free옵션을 실행합니다. 예를 들어 다음과 같이 실행할 경우
[root@FC10VM /]# free -s 2 -c 3
free명령이 2초마다 한번씩 총 3번 실행되게 됩니다.

free명령의 결과는 /proc/meminfo의 파일 정볼르 불러와 보여주게 됩니다. 때문에 좀더 자세한 정보는 /proc/meminfo파일참고하는게 좋습니다.



Posted by Special Alex