Notice
Recent Posts
Recent Comments
Link
Connecting
Linux Memory Managements 본문
반응형
개요
- 리눅스의 경우 메모리의 유휴공간을 캐시영역으로 잡아둔다. 이는 일반적인 환경에서 빠른 응답을 위한 기능이지만 과도한 메모리 사용은 서버 운영에 차질이 생길 수 있기 때문에 확인이 필요하다.
- 메모리 사용률의 경우 어떠한 프로세스가 동작하고 있는지에 따라 다르기 때문에 서버에서 동작하고 있는 프로세스의 메모리 점유와 상태를 꾸준히 확인하는 것이 중요하다.
- 일반적으로 동작중인 프로세스가 메모리를 과도하게 사용하는 경우, 메모리 누수를 의심해 보아야 하며, 이 경우에는 본 문서로는 해결할 수 없음을 알린다.
메모리 용량 확인
$ cat /proc/meminfo | grep MemTotal
MemTotal: 2097152 kB
메모리 사용량순 프로세스 확인
*RSS(Resident set size) : 물리 메모리를 실제 점유하고 있는 크기 *
간단한 확인 방법
$ ps -ef --sort -rss
상위 10개의 프로세스 메모리 사용량
$ ps -ef --sort -rss | head -n 11
메모리 사용량 표시
$ ps -eo user,pid,ppid,rss,size,vsize,pmem,pcpu,time,cmd --sort -rss | head -n 11
프로세스 수행명령에서 인수부분을 표시하지 않기
$ ps -eo user,pid,ppid,rss,size,vsize,pmem,pcpu,time,comm --sort -rss | head -n 11
명목 메모리 사용률 / 실질 메모리 사용률
- 명목메모리 사용률 : used / total = ( total - free ) / total
- 실질메모리 사용률 : used2 / total = ( total - free2 ) / total = ( total - free - buffers - cached) / total
스크립트
소수점 버리고 계산
#!/bin/bash TOTAL=`free | grep ^Mem | awk '{print $2}'` USED1=`free | grep ^Mem | awk '{print $3}'` USED2=`free | grep ^-/+ | awk '{print $3}'` NOMINAL=$((100*USED1/TOTAL)) ACTUAL=$((100*USED2/TOTAL)) echo NOMINAL=${NOMINAL}% ACTUAL=${ACTUAL}%
소수점까지 계산
#!/bin/bash TOTAL=`free | grep ^Mem | awk '{print $2}'` USED1=`free | grep ^Mem | awk '{print $3}'` USED2=`free | grep ^-/+ | awk '{print $3}'` NOMINAL=`echo "100*$USED1/$TOTAL" | bc -l` ACTUAL=`echo "100*$USED2/$TOTAL" | bc -l` echo NOMINAL=${NOMINAL:0:5}% ACTUAL=${ACTUAL:0:5}%
캐시메모리 해제하기
pagecache 해제
$ echo 1 > /proc/sys/vm/drop_caches
dentries, inodes 해제
$ echo 2 > /proc/sys/vm/drop_caches
pagecache, dentries, inodes 모두 해제
$ echo 3 > /proc/sys/vm/drop_caches
플러싱
$ sync
'리눅스 ' 카테고리의 다른 글
우분투 설치시 하드디스크 인식 문제 해결방법 (0) | 2018.04.06 |
---|---|
우분투 런레벨(runlevel) 변경하기 (0) | 2018.03.13 |
Comments