[DEC] Tru64 Digital Unix 시스템 분석과 모니터링

=======================================================================

                       Tru64 Digital Unix 시스템 분석과  모니터링 

=======================================================================

이문서의 저작권은 서진우 님에게 있습니다. 무단 복사나 배포는 허용하지 않습

니다.

                                               – //  2000 년 11 월 1 일  //

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

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

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 (출력 패킷)에 대해

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

확인할수 있다.

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

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

[root@howcodi : /]# netstat -i

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

Name  Mtu   Network     Address               Ipkts Ierrs    Opkts Oerrs  Coll

ee0   1500  <Link> 00:50:8b:65:b9:4d   3277291     0  2893848     0     0

ee0   1500  DLI         none                3277291     0  2893848     0     0

ee0   1500  210.220.69  howcodi             3277291     0  2893848     0     0

netstat -i 명령어는 input error(Ierrs), output error(Oerror), collisions(Coll) 등을

check 한다. Coll 이 10% 이상 나오면 문제가 있는것은 아니지만 Ethernet Card

에 부하가

조금 걸린다고 보면 된다. 하지만 20% 이상이 나오면 네트워크에 문제가 있다고 보

면 된다.

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

[root@howcodi : /]# netstat -m

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

  18 Kbytes for small data mbufs (peak usage 32 Kbytes)

152 Kbytes for mbuf clusters (peak usage 404 Kbytes)

533 Kbytes for sockets (peak usage 1016 Kbytes)

515 Kbytes for protocol control blocks (peak usage 999 Kbytes)

   2 Kbytes for routing table (peak usage 2 Kbytes)

   2 Kbytes for interface addresses (peak usage 2 Kbytes)

   9 Kbytes for socket names (peak usage 12 Kbytes)

< 1 Kbyte for ip multicast addresses (peak usage < 1 Kbyte)

< 1 Kbyte for interface multicast addresses (peak usage < 1 Kbyte)

< 1 Kbyte for packet headers (peak usage 11 Kbytes)

   0 requests for mbufs denied

   0 calls to protocol drain routines

netstat -m 명령어는 네트워크에 관련된 메모리의 통계를 보여준다.

위와 같이 mbufs denide 값이  0 이 아니면 문제가 있다고 보면 된다.

netstat -an 명령어는 socket을 통해서 network connecting results 를 나타낸다.

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

———–

[root@howcodi : /]# netstat -an | grep tcp | awk ‘{print $6}’ | sort | uniq -c

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

———–

  23 CLOSING

  22 ESTABLISHED

   2 FIN_WAIT_1

  26 FIN_WAIT_2

  25 LISTEN

   2 SYN_RCVD

884 TIME_WAIT

인터넷 서버에서는대부분이 TIME_WAIT 이다. 만약 FIN_WAIT_1과 FIN_WAIT_2의

percentage 가 전체 접속수 보다 높을시는 apache configure의 keepalive 을

enable 해주어야 한다.

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

[root@howcodi : /]# netstat -is

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

ee0 Ethernet counters at Wed Nov  1 11:47:02 2000

       65359 seconds since last zeroed

   389011739 bytes received

  1569145532 bytes sent

       34784 data blocks received

       11017 data blocks sent

    40939051 multicast bytes received

      161289 multicast blocks received

      171126 multicast bytes sent

        1146 multicast blocks sent

         923 blocks sent, initially deferred

         324 blocks sent, single collision

         666 blocks sent, multiple collisions

           0 send failures

           0 collision detect check failure

           1 receive failures

           0 unrecognized frame destination

           0 data overruns

           0 system buffer unavailable

           0 user buffer unavailable

netstat -is 는 network device driver error 를 checking 한다.

앞 예제에서 시스템은 11,017 block 의 data 를 보냈다. collision 값은 1,013

(324 +666)block 를 가지고 있다. 대략 data block sent 값의 10% 에 해당하는

값이다. collision 값이 10% 보다 높다면 단지 Ethernet Card 에 부하가 조금

걸린다고 보면 된지만 20% 에 가깝게 되면 이는 문제가 있음을 나타낸다.

기타 send failures, receive failures, data overruns, system buffer unavailable,

user buffer unavailable 필드값들은 0 이나 한자리수 정도여야 한다.

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

[root@howcodi : /]# netstat -p ip

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

ip:

        3647159 total packets received

        1 bad header checksum

        0 with size smaller than minimum

        0 with data size < data length

        2 with header length < data size

        0 with data length < header length

        0 fragments received

        0 fragments dropped (dup or out of space)

        0 fragments dropped after timeout

        0 packets forwarded

        185 packets not forwardable

        0 packets denied access

        0 redirects sent

        3 packets with unknown or unsupported protocol

        3646692 packets consumed here

        3347880 total packets generated here

        0 lost packets due to resource problems

        0 total packets reassembled ok

        0 output packets fragmented ok

        0 output fragments created

        0 packets with special flags set

netstat -p ip 명령어는 IP protocol로 비롯해서 발생하는 bad checksums,length

problems,

과도한 패킷수신, 패킷손실등을 체크하게 된다.

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

[root@howcodi : /]# netstat -id

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

Name  Mtu   Network     Address               Ipkts Ierrs    Opkts Oerrs  Coll Drop

ee0   1500  <Link> 00:50:8b:65:b9:4d   3701937     0  3254311     0     0   0

ee0   1500  DLI         none                3701937     0  3254311     0     0   0

ee0   1500  210.220.69  howcodi             3701937     0  3254311     0     0   0

sl0*  296   <Link> 0     0        0     0     0   0

lo0   4096  <Link> 127041     0   127041     0     0   0

lo0   4096  loop        localhost            127041     0   127041     0     0   0

ppp0* 1500  <Link> 0     0        0     0     0   0

netstat -id 는 output packet의 drop 을 감시한다. Oerrs 값이 Opkts 와 같거나 비

슷하

게 나오면 이 ethernet card 는 네트워크에 접속을 할수가 없다. Oerrs 값이 높게

나온

다면 netstat -is 에서의 error 정보를 상세히 살펴보기 바란다.

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

[root@howcodi : /]# netstat -rs

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

routing:

        0 bad routing redirects

        0 dynamically created routes

        0 new gateways due to redirects

        0 destinations found unreachable

        0 uses of a wildcard route

routing 통계를 구할수 있다. bad values 값이 클수록 문제가 생긴다.

[root@howcodi : /]# netstat -s

-s option 은 모든 protocol 정보를 보여준다.

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

[root@howcodi : /]# /sbin/sysconfig -q socket

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

socket:

pftimerbindcpu = 0

sbcompress_threshold = 0

sb_max = 1048576

sobacklog_drops = 0

sobacklog_hiwat = 192

somaxconn = 1024

somaxconn_drops = 0

sominconn = 0

mbuf_ext_lock_count = 64

umc_min_len = 1024

umc = 0

위의 명령어는 socket subsystem 의 attruibutes 값을 보여준다.

sobacklog_hiwat 값은 Server socket 을 최대로 요청할수 있는 수를 말한다.

마지막으로 TRU64 system의 configuration infotmation 을 HTML file 형식으로

모으는 kit 인 sys_check 에 대하여 알아보자.

http://www.tru64unix.compaq.com/sys_check/sys_check.html

위 사이트로 가면 sys_check kit 을 구할수 있다.

sys_check.tar 파일을 /tmp 에 풀어 놓고 setld 를 이용하여 설치함

[root@howcodi : /tmp]# tar xvf sys_check.tar

[root@howcodi : /tmp]# setld -l SYSCHECK119.kit

[root@howcodi : /tmp]# sys_check > howcodi_check.html

이제 이 사이트의 모든 설정내용은 howcodi_check.html 파일에 저장된다.

참고로 sys_check 는 configure information 을 모으는 툴이다. subsystem

의 attributes values 의 변경등은 할수가 없다..

이로써 시스템 분석과 모니터링에 대해 마치고 다음으로 커널 튜닝에 대해 들어가도

록 하겠다..

서진우

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

You may also like...

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