반응형

출처 : http://estenpark.tistory.com/133



사실 여러가지 방법으로 메모리 확인 방법을 생각 해봤다.
ps -ef -o rssize,comm 으로 전체의 합을 전체 메모리를 나눠서 계산하는 방법을 했지만 정확한 데이터가 나오지 않았다.

관제 대상을 가지고 있는 어떠한 툴로 사용하면 좀 더 정확한 UI형식의 결과물을 볼 수 있을 수 있을 것이다.

소개하려는 명령어는  svmon 명령어 이다.
메모리의 현재 상태에 관련하고 실제 메모리의 스냅샵을 구성하는 것이 아니라 명령어의 인터럽트가 가능한 사용자 레벨에서 수행 가능 하다. 즉 root 권한만 수행 할 수 있는 명령어라고 할 수 있다.

중요한 개념을 잡아야 하는데 그 이유는  svmon명령어는 페이지 별로 통계 해준다는 것이다.

  • 1페이지 가상 메모리의 4K 블록
  • 1프레임은 실제 메모리의 4K 블록
  • 어떠한 명시가 없다면 기본적으로 통계는 4096바이트 메모리 페이지 단위


# svmon
1.
                   size               inuse               free           pin            virtual
memory          1831616        2028009           5412         391022       1082699
pg space         526500           5021

2.
               work               pers                   clnt
pin          390788             0                        234
in use      1082491           0                         945518

3.
PageSize       PoolSize         inuse           pgsp           pin                virtual
s   4 KB              -               1947705        4781           349758          1002187
m  64 KB             -                5019             25               2579               5032


* 수치는 임의대로 적어서 다릅니다.
  • 1번의 실제 메모리 사용 설명
    • 전체 사이즈 [ size ] : 1831616
    • 페이지 포함 프레임 수 [ inuse ] : 2028009
    • 모든 메모리 중 남은 공간(프레임수) [ free ] : 5412
    • 고정 페이지의 프레임 수 [ pin ] : 391022
    • 가상 영역의 할당된 페이지 수 [ virtual ] : 1082699
  • 2번의 실제 메모리의 서브세트
    • 작업 세그먼트 페이지를 포함하는 프레임 수 [ work ] : 390788
    • 영구 세그먼트 페이지를 포함하는 프레임 수 [ pers ] : 0
    • 클라이언트 세그먼트 페이지를 포함하는 프레임 수 [  clnt ] : 234
    • in use ( 사용중인 실제 메모리의 서브세트)
    • pin(고정된 페이지가 있는 실제 메모리의 서브세트)
  • 3번 페이지 공간의 사용을 설명하는 통계


svmon -G
시스템 전체 메모리 사용량 통계 확인

전체 메모리 사이즈는 1831616*4096byte/1024/1024 = 127MB.
Free Memory는 5412*4096/1024/1024 = 41MB


svmon -U root -d
root 사용자가 사용하는 메모리의 내역


svmon -C inetd
inetd 데몬에 의해 사용되는 메모리의 통계


svmon -P (pid)
프로세스 메모리 사용량 통계




메모리 스왑/실제 메모리 통계 스트립트

#!/usr/bin/csh
 
# Swap 점검
/usr/sbin/swap -l | /usr/bin/tail -1 |sed 's/MB//g' |awk '{printf"%0.0f\n",100-(($5/$4)*100)}'
 
# Real Memory 점검
# 계산방법: 100 - ( ( FreeSize / TotSize ) * 100
svmon -G |grep memory |perl -ane 'printf"%0.1f \n", 100 - ( ( $F[3] / $F[1] ) * 100 ) '
  • 위의 스크립트를 보면  awk처리와 perl 처리를 두가지 버전으로 만들어 봤다.
  • 둘다 장단점은 있지만 확실히 perl로 하는 것이 더 좋다는 생각이 든다.




참고한 자료
http://www.sung-ho.pe.kr/index.php?p=20391

반응형

+ Recent posts