RadarURL
유닉스/리눅스

리눅스 시스템 성능 모니터링(CPU, 메모리)

by JaeSoo posted May 14, 2014
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

리눅스 시스템의 성능 모니터링 명령어


ㅇ free

free 또는 free -s 3(초) 로 시스템을 모니터링 하거나

watch free 또는 watch -n 1 -d free로 모니터링

(-n 시간 설정 -d 변화 부분 강조)



ㅇ pstree

실행중인 프로세스 상태를 트리 구조로 보여주는 명령어

pstree [프로세스를 기동한 사용자 ID] 형태로 조회 가능


ㅇ top

CPU 점유 프로세스들을 실시간으로 조회하는 명령어

# top [-d ss]

# top

top - 14:27:14 up 118 days, 21:54, 14 users, load average: 0.04, 0.05, 0.06
Tasks: 595 total, 1 running, 594 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.1%us, 0.2%sy, 0.0%ni, 99.5%id, 0.3%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 16287824k total, 13661668k used, 2626156k free, 510288k buffers
Swap: 18530296k total, 28320k used, 18501976k free, 4388768k cached


PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5670 root 20 0 15484 1652 960 R 3.1 0.0 0:02.87 top
72 root 20 0 0 0 0 S 1.5 0.0 22:11.41 events/5
2163 root 20 0 0 0 0 S 1.5 0.0 69:00.59 kondemand/4
2164 root 20 0 0 0 0 S 1.5 0.0 132:37.06 kondemand/5

- 1줄 top : 시스템의 전반적 상태(가동시간 등)

- 2줄 Tasks : 프로세스들의 상황

- 3줄 CPU : CPU의 상황

- 4줄 Mem : 메모리 상황

- 5줄 Swap : 스왑메모리 상황

- PID : 프로세스 ID (PID)

- USER : 프로세스를 실행시킨 사용자 ID

- PR : 프로세스의 우선순위 (priority)

- NI : NICE 값. 마이너스를 가지는 nice value는 우선순위가 높다.

- VIRT : 가상 메모리의 사용량(SWAP+RES)

- RES : 현재 페이지가 상주하고 있는 크기(Resident Size)

- SHR : 분할된 페이지, 프로세스에 의해 사용된 메모리를 나눈 메모리의 총합.

- S : 프로세스의 상태 [ S(sleeping), R(running), W(swapped out process), Z(zombies) ]

- %CPU : 프로세스가 사용하는 CPU의 사용율

- %MEM : 프로세스가 사용하는 메모리의 사용율

- COMMAND : 실행된 명령어

ㅇ vmstat

프로세스, 메모리의 상태를 보여주는 명령어


#vmstat

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 28440 4986260 506960 2089524 0 0 1 14 0 0 0 0 100 0 0


* process

- r : CPU 접근 대기 중인 실행 가능 프로세스 수

- b : 인터럽트 불가능한 수면 상태인 프로세스 수

* memory

- swpd : 사용된 가상 메모리 용량

- free : 여유 메모리 용량

- buff : 버퍼에 사용된 메모리 용량

- cache : 페이지 캐시에 사용된 메모리 용량

* swap

- si : 디스크에서 메모리로 스왑된 메모리 용량

- so : 디스크로 스왑되어 나간 메모리 용량

* 입출력

- bi : 블록 장치로 보내진 블록

- bo : 블록 장치에서 받아온 블록

* 시스템

- in : 일초당 인터럽트 수

- cs : 일초당 문맥 전환 작업수

* CPU

- us : CPU가 사용자 수준 코드를 실행한 시간(백분율 단위)

- sy : CPU가 시스템 수준 코드를 실행한 시간(백분율 단위)

- id : CPU idle time(백분율 단위)

- wa : 입출력 대기


vmstat (옵션없음 ) - 마지막 부팅 이후의 평균값

vmstat 2 10 - 10초 동안 2초 간격으로 정보 갱신


iostat

- 한 개 이상의 디스크 드라이브에 대한 입출력 통계와 CPU 활용량

#iostat

Linux 2.6.32-220.el6.x86_64 (dev) 2013년 05월 08일 _x86_64_ (16 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle
0.09 0.00 0.09 0.09 0.00 99.73

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 3.19 47.21 96.27 481060715 980953194
sdb 1.19 0.00 342.39 15707 3488939808
dm-0 8.36 5.03 79.18 51223082 806865688
dm-1 0.01 0.02 0.03 192064 314528
dm-2 0.99 0.01 7.88 142226 80313368

커널 버전 밑에 보이는 CPU 평균은 마지막 재부팅 이후의 평균 활용률

- %user : 어플리케이션 등 사용자 모드에 소모된 시간

- %nice : nice를 사용하여 스케줄링 우선순위가 바뀐 프로세스에 소모된 시간

- %system : 시스템(커널)이 사용한 시간

- %iowait : 디스크I/O 요청 때문에 CPU가 대기한 시간

- %steal : 다른 가상 CPU가 서비스하는 동안 비자발적으로 대기한 시간

- %idle : 대기한 시간

- tps : 초당 전송(입출력) 수

- Blk_read/s : 초당 읽혀진 512바이트 블록수

- Blk_wrtn/s : 초당 쓰여진 512바이트 블록수

- Blk_read : 지금까지 읽혀진 총 512바이트 블록수

- Blk_wrtn : 지금까지 쓰여진 총 512바이트 블록수


* -k 옵션 사용시 블록단위가 아닌 킬로바이트 단위의 정보를 볼 수 있다.

- cpu에서 시스템에서 사용하는 cpu시간이 지나치게 높다면(50% 이상) 디스크 I/O에서 문제가 있을 가능성이 크다.

- 시스템 전체의 부하가 높은데도 cpu에서 휴지시간(idle time, id 항목)이 일반적으로 10%를 넘는다면 I/O나 메모리에 문제가 있을 가능성이 크다.

- 휴지시간이 항상 0이라면 CPU를 완전하게 100% 사용하고 있는 상태이며 CPU의 과부하를 의미한다.


ㅇ mpstat

옵션없이 사용하면 iostat과 큰 차이 없음

-P ALL 옵션을 같이 사용하면 각 CPU별 사용현황을 볼 수 있음


# mpstat -P ALL

Linux 2.6.32-220.el6.x86_64 (dev) 05/08/13 _x86_64_ (16 CPU)

16:18:09 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
16:18:09 all 0.09 0.00 0.11 0.01 0.00 0.00 0.00 0.00 99.79
16:18:09 0 0.05 0.00 0.06 0.08 0.00 0.00 0.00 0.00 99.81
16:18:09 1 0.09 0.00 0.08 0.00 0.00 0.00 0.00 0.00 99.83
16:18:09 2 0.10 0.00 0.08 0.00 0.00 0.00 0.00 0.00 99.82
16:18:09 3 0.11 0.00 0.09 0.00 0.00 0.00 0.00 0.00 99.80
16:18:09 4 0.07 0.00 0.12 0.09 0.00 0.00 0.00 0.00 99.71
16:18:09 5 0.12 0.00 0.12 0.00 0.00 0.00 0.00 0.00 99.76


sadc 및 sar

- system activity data collector

- /etc/cron.d/sysstat 파일을 통해 주기적으로 작업하고 /var/log/sa 디렉토리에 sa<dd> 형식으로 저장(dd - 날짜)

- sadc의 수집자료는 sar에 의해 /var/log/sa 디렉토리에 sar<dd> 형식으로 저장

- sar<dd> 파일은 00:00~23:50까지 10분단위로 기록하며, 총 17개 항목을 보고

출처 : http://ttend.tistory.com/144


Articles

31 32 33 34 35 36 37 38 39 40