[시스템] 시스템 자원 모니터링 – 튜닝 (아랑)

////// 시스템 모니터링 ////////  – 무천 아랑

시스템의 성능을 분석 하는 여러가지 툴에 대해 설명 한다.

1. CPU 활동 모니터링

——————————————————————

[root@howcodi : /]# uptime

——————————————————————

14:04  up 12 days,  4:02,  6 users,  load average: 0.00, 0.04, 0.05

현재시간 / 시스템이 종사한 시간 / 현 시스템 사용자수 / 평균부하치 /

평균부하치는 5분,10분,15분 각각의 평균치 이다.

———————————————————————–

[root@howcodi : /]# ps aux | head -5

———————————————————————–

USER        PID %CPU %MEM   VSZ  RSS TTY      S    STARTED         TIME COMMAND

nobody    22099  2.1  0.4 16.6M 3.9M ??       S    09:14:08     0:31.33 /usr/local

nobody    16076  1.3  0.3 15.5M 2.9M ??       S    14:05:46     0:00.61 /usr/local

oracle    22039  1.3  0.2  134M 1.8M ??       S    09:15:22     0:08.82 oracleORCL

nobody    15369  0.6  0.4 16.5M 3.8M ??       S    09:14:03     0:27.49 /usr/local

여기서 head -5 를 붙여주므로 해서 CPU 활동순위가 높은것부터 차례로 볼수가 있다.

USER : 프로세서 소유자

PID : 프로세서 번호

%CPU : 사용된 CPU의 측정량

%MEM : 사용된 메모리 측정량

VSZ : BSD와 System V 에 사용된 가상메모리

RSS : 사용된 실제 메모리

TTY ; 프로세서와 관련된 터미널

S : 프로세서 활동 상태

    / R / : 실행중 또는 실행 가능 상태

    / S / : 비활성 상태

    / I / : 휴지 상태

    / T / : 정지 상태

    / Z / : 좀비 프로세스

    / D / : 디스크 대기

    / W / : 스왑된것

STARTED : 프로세스가 실행 시작된 시간

TIME : 실행된 시간

COMMAND : 명령어

————————————————————————-

[root@zzang911 /root]# pstree

————————————————————————-

init-+-automount

     |-crond

     |-hanterm—bash—root—su—bash

     |-2*[hanterm—bash—how—telnet]

     |-hanterm—bash—vi

     |-hanterm—bash—root—su—bash—pstree

     |-httpd—22*[httpd]

     |-identd—identd—3*[identd]

     |-inetd

     |-kflushd

     |-klogd

     |-kpiod

     |-kswapd

     |-kupdate

     |-login—bash—startx—xinit-+-X

     |                               `-wmaker-+-gkrellm

     |                                        |-hanterm—bash

     |                                        |-hanterm—bash—how—telnet

     |                                        |-hanterm—bash—root—su—bash

     |                                        |

     |                                        |-netscape-commun—netscape-commun

     |                                        |-wmami

     |                                        `-xmms—xmms—4*[xmms]

     |-mingetty

     |-named

     |-proftpd

     |-syslogd

     |-vmnet-bridge

     |-vmnet-dhcpd

     |-vmnet-netifup

     |-vmware-nmbd

     `-vmware-smbd

pstree 는 시스템 프로세스의 구조를 시각적으로 모니터링 해준다.

————————————————

[root@howcodi : /]# ulimit -Sa

————————————————

core file size (blocks)     unlimited

data seg size (kbytes)      131072

file size (blocks)          unlimited

max memory size (kbytes)    1018080

open files                  4096

pipe size (512 bytes)       8

stack size (kbytes)         2048

cpu time (seconds)          unlimited

max user processes          1024

virtual memory (kbytes)     1048576

———————————————–

[root@howcodi : /]# ulimit -Ha

———————————————–

core file size (blocks)     unlimited

data seg size (kbytes)      1048576

file size (blocks)          unlimited

max memory size (kbytes)    1018080

open files                  4096

pipe size (512 bytes)       8

stack size (kbytes)         32768

cpu time (seconds)          unlimited

max user processes          1024

virtual memory (kbytes)     1048576

ulimit -Sa 는 프로세서의 soft 한도를 나타내고 -Ha는 하드웨어 한도를 나타낸다.

————————————————————

[root@howcodi : /]# vmstat 5 5

————————————————————

Virtual Memory Statistics: (pagesize = 8192)

  procs    memory         pages                          intr        cpu

  r  w  u  act  free wire fault cow zero react pin pout  in  sy  cs  us  sy  id

  3 167 29   43K  75K 8178  22M   4M   7M  44K   5M 1888  32 286 595   3   0  96

  3 167 29   43K  75K 8178  164   20  114    0   11    0   8  23 335   0   0 100

  3 167 29   43K  75K 8178   89    0   89    0    0    0  16  44 420   0   0 100

  3 167 29   43K  75K 8178   92    0   89    0    3    0  17 137 486   1   0  99

  3 167 29   43K  75K 8178   94    0   89    0    5    0  26 189 556   1   0  98

vmstat 는 메모리 모니터링 도구 이지만 CPU 활동 항상도 포함하고 있다.

vmstat 5 5 는 5초 간격으로 5번 출력하라는 의미이다.

us : 사용자 프로그램을 실행시키는 사용 시간의 비율

sy : CPU 시간 단위로 소비된 CPU 사이클의 비율

id : 휴지시간 비율 ( 놀고 있는 시간 )

참고 : sy 가 50% 가 넘는다면 이는 I/O 에 문제가 있음을 예상할수 있다.

       해당 프로그램이 효율적으로 I/O 를 사용하는지 확인 바람..

       id 가 항상 0 이다.즉 cpu 가 항상 일만 한다고 생각하면 된다.

       이역시 어디선가 작업이 계속 축적되고 있다고 보면 된다.

       확인 한후 사살해라.

2. 메모리 관리와 모니터링

페이징(paging)과 스왑핑(swapping)에 대해 잠시 얘기 하도록 하자.

swapping 은 하나의 프로세스 전보를 디스크에 기록함으로 해서 자신의

메모리를 모두 비우는 것을 말한다. paging은 메모리를 필요로하는 해당

프로세서나 다른 프로세스를 위해 프로세스의 메모리 영역을 페이지 라고

불리는 단위로 디스크에 옮기는 것을 말한다.

page fault 는 프로세스가 메모리에 상주하지 않은 페이지를 필요로 할때

발생하며 swapping 은 거의 드물게 일어나며 (심각한 메모리 부족시) 의미

는 거의 비슷하다.

현재 시스템의 메모리 확인

————————————————

[root@howcodi : /]# grep mem /var/adm/messages

————————————————

Sep  7 01:03:45 howcodi vmunix: physical memory = 1024.00 megabytes.

Sep  7 01:03:45 howcodi vmunix: available memory = 994.00 megabytes.

현재 시스템의 swap 확인

————————————————

[root@howcodi : /]# swapon -s

————————————————

Swap partition /dev/rz16b (default swap):

    Allocated space:       387962 pages (3030MB)

    In-use space:            3112 pages (  0%)

    Free space:            384850 pages ( 99%)

Total swap allocation:

    Allocated space:       387962 pages (3030MB)

    Reserved space:         44714 pages ( 11%)

    In-use space:            3112 pages (  0%)

    Available space:       343248 pages ( 88%)

메모리 문제 파악하기

시스템에 과부하가 걸려있는데도 휴지기간(idle time)이 많거나 ps에서 많은

양의 메모리를 필요로 하는 프로그램이 실행되고 있다면 메모리 문제를 생각해

볼 수 있다.

   ㅇ vmstat 5 를 실행해보자.

   – swap-out이 지속적으로 항상 발생한다면 메모리가 부족한 것이다.

     주기적으로 swap-outs이 발생하는건 정상적인 것이다. BSD 시스템

     에서는 비상호대화적인 작업을 스왑아웃한다.

     현재 실행하고 있는 프로그램에서 스왑아웃이 계속 발생한다면 프로그램이

     죽을 수도 있으며 심각하게 메모리가 부족하다는것을 가리킨다. 스왑아웃필드

     (so)가 항상 0에 가까워야한다.

   – ps나 통계시스템에서 메모리 집약적인 작업이 있는가? RSS필드나 storage

     integral이 큰 프로그램을 찾아보자.

     (RSS는 프로세스가 사용중인 실제 메모리 크기. kbytes 단위.)

     (storage integral은 sa -K 옵션을 이용해 볼수있음.)

3. 네트워크 부하량 체크

Traceroute (ftp://ftp.ee.lbl.gov/traceroute.tar.Z)

네트워크 연결 경로에 대한 라우팅 홉(HOP)지점마다의 주소와 그 속도를 측정할수 있는

유틸리티로 Linux의 경우 기본적으로 설치되어 있다.

traceroute -q 3 www.netkiller.com

Ping

양 끝단의 전체적인 속도 및 패킷 에러율을 체크하고자 할 경우 ping을 통해 일정량의 패킷을

보내어 다시 받을 때까지 걸리는 전체 시간과 패킷 손실율을 측정할 수 있다.

– Sample –

[root@ns named]# ping -c 10 www.netkiller.com

## www.netkiller.com 으로 총 10번의 ping을 실행한다.

PING www.netkiller.com (210.103.183.35): 56 data bytes

64 bytes from 210.103.183.35: icmp_seq=0 ttl=251 time=377.5 ms

64 bytes from 210.103.183.35: icmp_seq=1 ttl=251 time=417.6 ms

64 bytes from 210.103.183.35: icmp_seq=2 ttl=251 time=247.7 ms

64 bytes from 210.103.183.35: icmp_seq=3 ttl=251 time=367.1 ms

64 bytes from 210.103.183.35: icmp_seq=4 ttl=251 time=462.1 ms

64 bytes from 210.103.183.35: icmp_seq=5 ttl=251 time=957.6 ms

64 bytes from 210.103.183.35: icmp_seq=6 ttl=251 time=179.3 ms

64 bytes from 210.103.183.35: icmp_seq=7 ttl=251 time=77.0 ms

64 bytes from 210.103.183.35: icmp_seq=8 ttl=251 time=69.9 ms

64 bytes from 210.103.183.35: icmp_seq=9 ttl=251 time=498.8 ms

— www.netkiller.com ping statistics —

10 packets transmitted, 10 packets received, 0% packet loss

round-trip min/avg/max = 69.9/365.4/957.6 ms

netstat , ifconfig

서버의 전체적인 네트워크 패킷 충돌율을 체크할 경우 netstat – i 나 ifconfig -a

의 결과에서 직접 계산할 수 있다.

– Sample –

[root@zzang911 /root]# ifconfig -a

eth0Link encap:EthernetHWaddr 00:00:B4:B7:DD:19

inet addr:210.220.69.135Bcast:210.220.69.255Mask:255.255.255.0

UP BROADCAST RUNNING MULTICASTMTU:1500Metric:1

RX packets:8578 errors:0 dropped:0 overruns:0 frame:0

TX packets:1023 errors:0 dropped:0 overruns:0 carrier:0

collisions:59 txqueuelen:100

Interrupt:10 Base address:0xb400

eth0란에서 Collisions수만큼의 충돌이 TX packets (출력 패킷)에 대해

발생하였으므로 (10/59) X 100 을 통해 충돌율이 약 2.7% 라는것을

확인할수 있다.

보통 약 8% 이상의 충돌율을 보인다면 네트워크를 점검해 보아야 한다.

위 옵션 설명들은 유닉스 계열에 가깝다..리눅스와는 다소 차이가 있을수 있다.

하지만..비슷비슷~

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

페이스북/트위트/구글 계정으로 댓글 가능합니다.