본문 바로가기

linux

[Linux] 리눅스 메모리 사용량(Memory Usage) 확인 - 실제 메모리 사용량

1. 리눅스 메모리 확인

Linux 커널은 유휴 메모리가 있다면 캐시하려고 한다.


Linux는 I/O 성능을 높이기 위해 데이터 통신 시 메모리에 적재 후 통신을 한다.

이는 동일한 데이터에 대한 접근을 빠르게 하기 위함인데 이를 Page Cache라 한다

한번이라도 데이터를 읽거나 쓴 적이 있으면 메로리는 Page Cache에 적재 된다.


이러한 Page Cache의 메커니즘은 Free 명령으로 메모리를 확인 했을 때 free 영역에 나타나는 가용 메모리가
적게 나타나는 원인이 된다.

 

실질적인 의미의 메모리 사용률을 구하려면 캐시 영역도 유휴 메모리로 봐야한다.


명목메모리 사용률 = used / total = ( total - free ) / total
실질메모리 사용률 = used2 / total = ( total - free2 ) / total = ( total - free - buffers - cached) / total

 

 

 

위 그림에서 명목 메모리 사용률은

6750MB / 7854MB = 0.859 임으로 85.9%의 메모리를 사용중이다.

 

실제 메모리 사용률은

7854 - 1104 - 236 - 1123 / 7854 = 0.686 임으로 68.6%의 메모리를 사용중이다.

 

2. 캐시 메모리 정책 변경

 

리눅스 커널은 파일을 생성할 때 파일의 정보를 갖는 데이터의 빠른 접근이 위해 커널의 Slab 자료구조를
통해 관리하는데 slaptop 명령을 통해 확인 가능하다.

 

cat /proc/meminfo 를 보면 전체 메모리 정보를 확인 할 수 있다.

 

vfs_chach_pressure 파라미터는 리눅스 커널의 vm 구조와 관련된 파라미터로
이 파라미터는 리눅스 커널이 캐쉬로 사용한 메모리를 반환하는 정도를 지정한다.

 

이값을 기본값은 100이며 100이상일 경우 빠르게 캐쉬를 반환하며 이 또한 빈번할 경우 성능과 연계될 수 있다.
0일경우 캐시를 반환하지 않음으로 시스템은 oom 상태가 될 것이다.

 

sysctl vm.vfs_cache_pressure=110
sysctl vm.vfs_cache_pressure=100
sysctl vm.vfs_cache_pressure=50

 

또는

 

/etc/sysctl.conf에 vm.vfs_cache_pressure=1000

 

으로 설정하여 영구 설정 가능하다

캐시 정책을 조절 하는 방법 외에도 당장 캐시를 비우는 방법으로는 아래와 같은 방법이 있다
(아래 명령을 사용하기 전에는 반드시 sync를 통해 캐쉬에 데이터를 저장장치에 반영 시켜야 한다)

 

echo 1 > /proc/sys/vm/drop_caches
echo 2 > /proc/sys/vm/drop_caches
echo 3 > /proc/sys/vm/drop_caches

 

각 숫자는 아래와 같은 의미가 있다

drop_caches = 1
Page cache를 해제 한다.
drop_caches = 2
inode, dentry cache를 해제 한다.
drop_caches = 3
Page cache, inode cache, dentry cache를 모두 해제 한다.

free 명령으로 확인하면 바로 가용 메모리가 늘어난 것과 캐쉬 메모리가 사라진 것을 확인 할 수 있다

 


[메모리관리]https://wiki.kldp.org/Translations/html/The_Linux_Kernel-KLDP/tlk3.html
[참고]http://blog.daum.net/_blog/BlogTypeView.do?blogid=0FcAa&articleno=12415077&categoryId=521567&regdt=20151123102530

 

좋은 글 감사합니다

 

'linux' 카테고리의 다른 글

[Linux] 오라클 실행 및 종료  (0) 2017.02.03
[Linux] 리눅스 종료 끄기 / 재시작  (0) 2017.02.03
Make 스크립트  (0) 2016.02.16
서버 버전 및 패키지 버전 체크  (0) 2016.02.16
rsync 서버 설치 및 클라이언트 설정  (0) 2016.02.15