CentOS 7(RHEL 7)부터
free명령어의 출력 형식이 변경되었습니다. 기존의buffers/cache라인이 사라지고available컬럼이 추가된 배경을 이해하고, 정확한 메모리 사용률을 계산하는 방법을 정리합니다.
0. 배경 지식: CentOS 6 vs 7 차이점
리눅스는 남는 메모리를 적극적으로 캐시(Cache)로 사용하여 성능을 높입니다. 따라서 'Used'가 높다고 해서 반드시 메모리가 부족한 것은 아닙니다.
- CentOS 6 이하:
-/+ buffers/cache행을 통해 실질 사용량을 확인했습니다. - CentOS 7 이상: 커널이 직접 계산한
available컬럼을 통해 "즉시 사용 가능한 메모리"를 판단합니다.
Test Environment
- OS: CentOS 7 (Kernel 3.10.0-957.el7.x86_64)
1. 메모리 확인 명령어 (free)
가장 기본적인 확인 방법입니다. -m 옵션은 Megabyte 단위로 출력합니다.
[root@localhost sw]# free -m
total used free shared buff/cache available
Mem: 7803 892 4686 263 2224 6277
Swap: 8064 0 8064
실시간 모니터링 및 상세 보기
-w(wide) 옵션을 주면 buffer와 cache를 분리해서 볼 수 있고, -s(seconds) 옵션으로 반복 조회가 가능합니다.
# 1초 간격으로 buffer/cache를 분리하여 출력
free -mw -s 1
2. 메모리 사용률 계산 공식 (Calculation)
단순히 used / total로 계산하면 캐시 메모리까지 사용량에 포함되어 수치가 과도하게 높게 나옵니다. 목적에 따라 계산 방식을 달리해야 합니다.
공식 A: OS 관점의 사용률 (캐시 포함)
메모리가 실제로 얼마나 할당되어 있는지(반납되지 않은 상태) 확인할 때 사용합니다.
$$ Usage(\%) = \frac{used}{total} \times 100 $$
공식 B: 애플리케이션 관점의 실질 사용률 (권장)
"실제로 메모리가 부족한가?"를 판단할 때는 available 값을 기준으로 해야 합니다.
$$ Usage(\%) = \frac{total - available}{total} \times 100 $$
sar -r 1 명령어를 통해서도 %memused(메모리 사용률)를 확인할 수 있습니다.
3. 주요 파라미터 설명 (Parameters)
CentOS 7 free 명령어의 각 컬럼이 의미하는 바는 다음과 같습니다.
| 파라미터 | 설명 |
|---|---|
| total | 설치된 전체 물리 메모리 크기 |
| used | 현재 할당되어 사용 중인 메모리 (total - free - buff/cache) |
| free | 아무 용도로도 사용되지 않는 완전한 유휴 메모리 |
| shared | tmpfs(램디스크) 등 프로세스 간 공유되는 메모리 |
| buff/cache | 커널 버퍼 및 파일 시스템 캐시 (필요시 즉시 반환 가능) |
| available | (핵심) 스와핑(Swapping) 없이 새로운 프로세스 실행에 즉시 할당 가능한 메모리 추정치 |
Next Step:
메모리 사용률이 비정상적으로 높다면(available 부족), top 명령어로 메모리 누수(Leak)가 의심되는 프로세스를 찾거나, echo 3 > /proc/sys/vm/drop_caches 명령어로 캐시를 강제 반환하여 가용 공간을 확보하는 방법을 검토해 보세요.