서버 엔지니어가 가장 많이 사용하는 명령어 중 하나 free, free -m이라는 명령어이다.
free라는 명령어는 총 메모리, 사용 중인 메모리, 남아 있는 메모리, 가상 메모리를 간단하게 볼 수 있도록 해주는 명령어인데
남아 있는 메모리에 대해서 오해를 하고 있는 부분이 있어서 글을 적어 봅니다.
그럼, 서버에 접속해서 현재 사용 중인 메모리와 남아 있는 메모리에 대해서 확인해 보도록 하겠습니다.
# free
total used free shared buffers cached
Mem: 16359780 9157224 7202556 0 201912 6396404
-/+ buffers/cache: 2558908 13800872
Swap: 3911816 160 3911656
각 항목에 대해서 간단히 설명해 본다.
[Mem] total : Total Physical Memory size
[Mem] used : Total Physical Memory size - Free memory size
[Mem] free : 현재 사용되고 있지 않은 여유 Memory
[Mem] shared : 항상 0이고, 현재 사용되고 있지 않음.
[Mem] buffers : File등의 Meta data를 Cache하고 있는 Physical Memory size
[Mem] cached : File의 Real Data를 Cache하고 있는 Physical Memory size
[-/+ buffers/cache] used- : buffers, cached를 포함하고 있지 않은 used size
[-/+ buffers/cache] free+ : buffers, cached를 포함한 free size
[Swap] total : Total Swap size
[Swap] used : Total Swap size - Free size
[Swap] free : 사용하고 있지 않은 Swap size
free를 입력하면 출력 되는 단위는 kilobyte이다.
우리는 Megabyte에 익숙해져 있으니 free -m 으로 보면 쉽게 얼마나 메모리를 사용하는지 알 수 있다.
다시 본론으로 돌아와서 free 출력 값을 보면 [Mem] free 항목을 보고 현재 남아있는 메모리는 7202328(7033MB)라고
알고 있는 사람들이 있다. 이것은 오해이다.
정확히 말하면 [Mem] free항목은 "남아있는 Memory Size"가 아닌, 어떠한 용도로도 사용되고 있지 않은
Physical Memory Size라고 생각하면 된다.
결론적으로 System 전체의 Memory 사용량의 감시는 [Mem] Free을 판단 기준으로 하는 것이 아니라,
사용가능한 Physical Memory Size로 계산 할 필요가 있다.
계산하는 항목은 아래와 같다.
Memory size ≒MemFree + Inactive
MemFree 와 Inactive 는 /proc/meminfo에 있는 항목이니 cat으로 출력해 보자.
# cat /proc/meminfo
MemTotal: 16359780 kB
MemFree: 7202556 kB
Buffers: 201912 kB
Cached: 6396404 kB
SwapCached: 0 kB
Active: 2578320 kB
Inactive: 6149700 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 16359780 kB
LowFree: 7202556 kB
SwapTotal: 3911816 kB
SwapFree: 3911656 kB
Dirty: 108 kB
Writeback: 0 kB
AnonPages: 2129660 kB
Mapped: 57756 kB
Slab: 383820 kB
PageTables: 15708 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
CommitLimit: 12091704 kB
Committed_AS: 3042920 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 265072 kB
VmallocChunk: 34359472959 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
Hugepagesize: 2048 kB
free로 출력했을 때보다 더 많은 항목들이 출력 되었다.free는 /proc/meminfo에 있는 항목들을 참조하여
보기 쉽게 출력해 주는 명령어이니 좀 더 자세한 메모리 확인을 위해서는 /proc/meminfo 보도록 하자.
(meminfo 항목에 대해서 얘기하면 길어지니 생략하겠다)
Inactive: 6149700 kB
+ MemFree: 7202556 kB
--------------------------------------
사용 가능한 메모리 : 13800872 kB (약 13.8G)
필자가 초반에 현재 남아있는 메모리는 7202328(7033MB)라고 기재했던 메모리와 5G 정도 차이가 난다는 것을 알 수 있다.
이런 계산법이 어렵거나 빨리 확인을 해야 하는 경우라면 free 입력 후 -/+ buffers/cache: 2558908 13800872 을 보아라.
2558908 kB 가 현재 사용된 메모리이고
총 메모리(16359780 kB)에서 2558908 kB 뺀 값이 현재 사용할 수 있는 메모리이니 꼭 기억해 두었으면 한다.
'기초 Linux 서버관리' 카테고리의 다른 글
yum 패키지설치에러 중 ERROR with rpm_check_debug vs depsolve (0) | 2014.02.21 |
---|---|
리눅스 서버에 외장하드(NTFS) Mount하여 파일 복사하기 (0) | 2014.02.18 |
php.ini 파일 실행 위치 확인 (0) | 2013.03.21 |
Cannot load Zend Guard Loader - it was built with configuration 에러 (0) | 2013.03.21 |
웹 사이트 로딩 속도 체크 사이트 (0) | 2012.08.14 |