서버모니터링 top실무2편: top실행화면을 읽고 해석하는 방법
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 1,289 조회
- 0 추천
- 목록
본문
서버모니터링 top실무2편: top실행화면을 읽고 해석하는 방법
우리는 top실행화면에서 시스템의 전반적인 실행상태를 파악해야 한다.
이것이 목적이고 top을 사용하는 궁극적인 이유이다.
그렇다면 top실행화면에서 무엇을 알아야 할까? 그렇다.
top화면의 출력결과에서 각 항목들이 어떤 의미를 가지고 있는가를 알아야한다.
따라서 이번에는 top의 실행결과 화면에서 각각의 항목들이 어떤 의미를 가지고 있는가를알아보도록 할 것이다.
다음은 top을 실행한 화면이다.
top - 14:31:01 up 9 min, 5 user, load average: 0.00, 0.07, 0.08 Tasks: 70 total, 1 running, 69 sleeping, 0 stopped, 0 zombie Cpu(s): 0.2%us, 0.2%sy, 0.0%ni, 99.3%id, 0.0%wa, 0.2%hi, 0.0%si, 0.0%st Mem: 255620k total, 109424k used, 146196k free, 9164k buffers Swap: 522072k total, 0k used, 522072k free, 68132k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 15 0 2060 624 532 S 0 0.2 0:00.43 init 2 root RT -5 0 0 0 S 0 0.0 0:00.02 migration/0 3 root 34 19 0 0 0 S 0 0.0 0:00.00 ksoftirqd/0 4 root RT -5 0 0 0 S 0 0.0 0:00.00 watchdog/0 5 root RT -5 0 0 0 S 0 0.0 0:00.00 migration/1 6 root 34 19 0 0 0 S 0 0.0 0:00.00 ksoftirqd/1 7 root RT -5 0 0 0 S 0 0.0 0:00.00 watchdog/1 8 root 10 -5 0 0 0 S 0 0.0 0:00.00 events/0 9 root 10 -5 0 0 0 S 0 0.0 0:00.00 events/1 10 root 18 -5 0 0 0 S 0 0.0 0:00.00 khelper 11 root 17 -5 0 0 0 S 0 0.0 0:00.00 kthread 15 root 19 -5 0 0 0 S 0 0.0 0:00.00 kblockd/0 16 root 10 -5 0 0 0 S 0 0.0 0:00.00 kblockd/1 17 root 14 -5 0 0 0 S 0 0.0 0:00.00 kacpid 79 root 14 -5 0 0 0 S 0 0.0 0:00.00 cqueue/0 80 root 14 -5 0 0 0 S 0 0.0 0:00.00 cqueue/1 83 root 10 -5 0 0 0 S 0 0.0 0:00.00 khubd |
top실행결과로 출력되는 시스템전반의 운영상태에 대하여 각 항목별 의미들을 살펴보도록 하자.
TOP실행화면의 첫번째 행의 의미
위의 top명령의 결과로 확인되는 첫번째 행은 시스템의 부하율을 알려준다.
top - 14:31:01 up 9 min, 5 user, load average: 1.00, 2.07, 1.08 |
이 행에 있는 각 항목들의 의미는 다음과 같다.
- top : top유틸리티 이름
- 14:31:01 : 시스템의 현재시간
- up 9 min : 시스템이 부팅된 후에 재부팅이나 종료 없이 현재까지 운영된 시간
- 5 users : 현재 로그인 된 사용자의 수
- load average : 1.00, 2.07, 1.08 : 최근 1분,5분,15분 각각의 시스템 평균부하율
참고로 위의 첫번째 행의 결과는 uptime명령어의 결과와 거의 같다는 사실도 알아두기 바란다.
TOP실행화면의 두번째 행의 의미
다음은 두번째 행은 프로세스들의 종합적인 상황을 알려준다.
Tasks: 70 total, 1 running, 69 sleeping, 0 stopped, 0 zombie |
두번째 행의 출력 결과는 현재 실행중인 프로세스(Tasks)들의 전체적인 상황을 알려주는 것이 목적이다.
각 항목들의 의미는 다음과 같다.
- Tasks: 70 total : 전체 실행된 프로세스 수
- 1 running : 현재 실행되고 있는 프로세스 수
- 69 sleeping : 유휴상태에 있는 프로세스 수
- 0 stopped : 종료된 프로세스 수
- 0 zombie : 좀비 프로세스 수
여기서 좀비프로세스에 대한 개념을 간략히 설명하면 다음과 같다.
참고하기 바란다.
TOP실행화면의 세번째 행의 의미
그리고 다음 세번째 행은 CPU의 사용 및 실행상태를 알려준다.
Cpu(s): 0.2%us, 0.2%sy, 0.0%ni, 99.3%id, 0.0%wa, 0.2%hi, 0.0%si, 0.0%st |
세번째 행은 CPU의 전반적인 운용상황(CPU states)을 알려주는 것이 목적이다.
각 항목의 값의 의미는 다음과 같다.
- 0.2%us : 사용자가 실행시킨 프로세스의 CPU 사용율(user mode)
- 0.2%sy : 시스템자체에서 사용하는 CPU 사용율(system mode)
- 0.0%ni : nice 정책에 의해 사용되고 있는 CPU사용율(low priority user mode)
- 99.3%id : 사용되지 않고 남은 CPU 사용율(idle task)
- 0.0%wa : 입출력 대기상태의 CPU 사용율(I/O waiting)
- 0.2%hi : IRQs에 사용된 CPU(servicing IRQs)
- 0.0%si : soft IRQs에 사용된 CPU (servicing soft IRQs)
- 0.0%st : steal값(다른 instances 실행에 주어진 time값)
즉 CPU의 사용자 사용율과 시스템자체 사용율 그리고 NICE정책에 의한 사용율, 그리고 놀고있는 CPU 사용율등을 각각 나타내고 있다.
즉 위와 같은 CPU의 사용현황으로 파악되는 자료를 가지고 CPU의 추가증설계획이나 업그레이드계획을 세울 수 있다.
즉 idle지표인 id값에 대한 특정기간(하루, 일주일, 월단위)동안의 통계결과를 가지고 CPU의 증설 또는 업그레이드 계획을 수립하면 된다.
TOP실행화면의 네번째 행의 의미
그리고 네번째 행에서는 실제메모리(RAM)의 상태를 파악할 수 있다.
Mem: 255620k total, 109424k used, 146196k free, 9164k buffers |
즉 이 행에서는 시스템에 장착되어 사용되고있는 실제메모리(RAM)의 사용현황을 알려주고 있다.
각 항목의 의미는 다음과 같다.
- 255620k total : 실제 메모리의 전체용량
- 109424k used : 프로세스에 의해 사용되고 있는 메모리 사용량
- 146196k free : 사용되지 않고 남아있는 메모리양
- 9164k buffers : 버퍼링된 메모리양
이 정보를 잘 활용한다면 현재 시스템의 메모리가 충분한가 부족한가를 알 수 있다.
즉 전체 메모리 중에서 현재 사용되지 않고 남아있는 메모리의 용량(위의 예에서는 146196k)을 특정기간(하루, 일주일, 월단위)동안에 통계를 낸다음 이를 참조하여 실제메모리 증설 또는 업그레이드 계획을 수립할 수 있다.
TOP실행화면의 다섯번째 행의 의미
그리고 다섯번째 행에서는 스왑메모리의 상태를 파악할 수 있다.
Swap: 522072k total, 0k used, 522072k free, 68132k cached |
앞서 설명한바있는 스왑(swap)메모리란 디스크의 일부분을 메모리로 사용하는 가상메모리(Virtual Memory)를 의미한다.
스왑메모리의 용량은 리눅스 시스템을 설치할 때에 지정된 것이며, 설치 이후에도 필요하다면 증설할 수도 있다.
즉, 이 행에서 우리는 시스템에서 사용되는 스왑메모리의 상태를 파악할 수 있으며 각 행의 의미는 다음과 같다.
- 522072k total : 전체 스왑메모리량
- 0k used : 프로세스에 의해 사용된 스왑메모리량
- 522072k free : 남아 있는 스왑메모리량
- 68132k cached : 캐싱 메모리양
현재 시스템의 스왑메모리 운용상황이므로 스왑메모리가 많이 사용되고 있다라는 의미는 실제메모리(RAM)가 부족하다는 것을 반증하는 것이다.
따라서 시스템 메모리(RAM)의 증설 또는 업그레이드 계획에 스왑메모리의 운용현황도 참고해야 한다.
또한 불가피하게 시스템메모리( RAM)를 증설할 여유가 없는 경우에 스왑메모리 또한 부족하다고 판단되었다면 스왑메모리를 증설해야 한다.
스왑메모리의 증설과 가동 및 설정방법에 대한 자세한 설명은 이 책의 제15장에 있는 “시스템 안정성을 위한 스왑메모리 관리 실무”편을 보기 바란다.
TOP실행화면의 여섯번째 행의 의미
마지막으로 여섯번째 행은 전체 개별프로세스들의 시스템 자원 사용현황과 실행상태를 파악할 수 있다.
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 15 0 2060 624 532 S 0 0.2 0:00.43 init 2 root RT -5 0 0 0 S 0 0.0 0:00.02 migration/0 3 root 34 19 0 0 0 S 0 0.0 0:00.00 ksoftirqd/0 4 root RT -5 0 0 0 S 0 0.0 0:00.00 watchdog/0 5 root RT -5 0 0 0 S 0 0.0 0:00.00 migration/1 6 root 34 19 0 0 0 S 0 0.0 0:00.00 ksoftirqd/1 7 root RT -5 0 0 0 S 0 0.0 0:00.00 watchdog/1 8 root 10 -5 0 0 0 S 0 0.0 0:00.00 events/0 9 root 10 -5 0 0 0 S 0 0.0 0:00.00 events/1 10 root 18 -5 0 0 0 S 0 0.0 0:00.00 khelper 11 root 17 -5 0 0 0 S 0 0.0 0:00.00 kthread 15 root 19 -5 0 0 0 S 0 0.0 0:00.00 kblockd/0 16 root 10 -5 0 0 0 S 0 0.0 0:00.00 kblockd/1 17 root 14 -5 0 0 0 S 0 0.0 0:00.00 kacpid 79 root 14 -5 0 0 0 S 0 0.0 0:00.00 cqueue/0 80 root 14 -5 0 0 0 S 0 0.0 0:00.00 cqueue/1 83 root 10 -5 0 0 0 S 0 0.0 0:00.00 khubd |
여기에서는 현재 시스템에서 실행중인 모든 개별 프로세스들의 시스템 자원 사용현황과 실행 상태 및 실행정보들을 상세하게 파악 할 수 있다.
위의 결과에서 우리는 하나의 프로세스당 12개 항목에 대한 정보를 알 수 있지만 사실은 개별 프로세스당 모두 26개의 정보를 가지고 있다.
단지 기본 값으로 12개의 정보만을 출력할 뿐이다.
다른 설정 또는 옵션을 실행하면 26개의 정보들에 대한 값들을 모두 확인할 수도 있다.
관련자료
-
이전
-
다음