Linux

[CentOS 7] 메모리 사용률 계산

비번변경 2021. 6. 12. 22:37

 

 

 

들어가기 전에,

 메모리 사용률 계산 방법을 참고하려고 들어왔는데 free 실행 결과가 아래 사진과 다르다면?

 즉, Mem/Swap 사이에 행 하나가 더 있거나 available 열이 없으면 오래된 OS를 사용하고 있을 수 있으니 아래의 링크를 참고한다.

2021.06.11 - [CentOS 6] 메모리 사용률 계산

OS 버전이 올라옴에 따라 free 명령에도 변화가 있었기 때문에, 아래 내용은 도움이 되지 않을 것이다.


 각설하고, 

free -m
CentOS 7 이상에서의 free

 free 명령으로 메모리 사용량을 확인하면 조금 이상한 점이 있다.

 위 사진의 Mem 행에서 사용량(used)과 남은 메모리 용량(free)을 더해도 총 용량(total)에 한참 못 미친다는 것이다.

나머지는 대체 어디로 간 걸까?

 

 바로 buff/cache에서 찾을 수 있다.

 리눅스는 성능 향상을 위해 남은 메모리 용량을 캐시 영역으로 사용하기 때문이다. 할당되어 있던 캐시 영역은 프로세스가 메모리를 필요로 하는 경우, 자동으로 크기를 조절한다.

 

 먼저 free 명령의 각 속성 의미를 정리해둔다.

total 현재 시스템에 설치되어 있는 전체 메모리 용량
total = used + free + buff/cache
total = used + available
used 현재 사용 중인 메모리 용량
used = total - free - buff/cache
used = total - available
free 사용 가능한 잔여 메모리 용량
shared 프로세스 간 통신에 사용되는 메모리 옹량
buff/cache 캐시 영역으로 사용하는 메모리 용량
buff/cache = buffers + cache
available 기존의 -/+ buffer/cache이 삭제되고 생성된 속성.
Swapping 없이 사용 가능한, 즉 실제로 사용 가능한 메모리의 예상 용량

 

 이 정보를 바탕으로 메모리 사용률을 계산해본다.

 

실질 메모리 사용률

실질 메모리 사용량
캐시 영역을 제외한 메모리 사용량

 

공식

$$ \mathrm{real\_usage} = \frac{\mathrm{used}}{\mathrm{total}}*100(\%) $$

계산 명령어

free | grep ^Mem | awk '{printf "actual_usage=%s, total=%s, actual_usage_ratio=%.2f%% \n", $3, $2, $3*100/$2}'

 

명목 메모리 사용률

명목 메모리 사용량
실질 메모리 사용량과 캐시 영역을 포함한 메모리 사용량을 더한 양

 

공식

$$ \mathrm{usage} = \frac{\mathrm{used} + \mathrm{buff/cache}}{\mathrm{total}} * 100(\%) $$

계산 명령어

free | grep ^Mem | awk '{printf "nominal_usage=%s, total=%s, nominal_usage_ratio=%.2f%% \n", $3+$6, $2, ($3+$6)*100/$2}'