리눅스 시스템모니터링 성능 측정도구 - perf 소개와 사용법
리눅스 시스템모니터링 성능 측정도구 - perf 소개와 사용법
perf란? 리눅스 명령어 중의 하나이며 리눅스 커널 프로젝트에서 관리되는 성능측정 도구이며,
리눅스의 특정 프로그램이나 시스템 전체를 분석할수 있습니다.
예로 어느 프로그램의 어느 함수가 CPU가 많이 사용하는지, 어느 코드 부분이 메모리를 할당을 얼마나 하는지 등을 어셈블리 및 소스 코드 레벨로 파악할 수 잇고 시스템의 page-fault, context-switch, cache-misses 등이 몇번이나 일어났는지를 파악할 수 있습니다.
또한 특정 커널 함수가 불리는지와 얼마나 불리지는도 파악할 수 있습니다.
| Perf 리눅스기반 성능측정 도구 특징과 효과 |
Perf의 특징
- 특정 프로그램 또는 시스템 전체 성능 분석
- 각종 CPU에서 지원하는 PMU 기능제어
- 각종 이벤트(cpu-cycles, cache-misses등) 정보수집
- 수집된 성능분석 정보 기반 통계 view 제공(TUI, GUI등등)
- 어셈블리 또는 소스코드 단위 overhead분석
- Kernel API(얼마나 불러지는 지) Tacing 기능
Perf의 효과
- 복잡, 다양해지는 각 커널 버전에 맞춰 성능분석
- 커널 또는 프로그램 속도 저하없이 성능 분석
- 각종 최신 CPU(x86, ARM, SPARC, etc...)에도 이용가능
- 커널, 시스템의 과의 호환성 문제 및 성능저하 원인 분석이 용이
| Perf 설치 |
PERF 설치 확인
[root@web ~]# rpm -qa | grep perf perf-2.6.32-642.15.1.el6.x86_64
PERF 설치하기
[root@web ~]# yum -y install perf
| Perf 사용법 |
이벤트 발생 횟수 세기
명령어 : perf stat pwd
[root@web /]# perf stat ls bin boot data dev etc home lib lib64 lost+found media mnt opt proc root sbin selinux srv sys tmp usr var Performance counter stats for 'ls': 0.720093 task-clock (msec) # 0.743 CPUs utilized 0 context-switches # 0.000 K/sec 0 cpu-migrations # 0.000 K/sec 261 page-faults # 0.362 M/seccycles stalled-cycles-frontend stalled-cycles-backend instructions branches branch-misses 0.000969577 seconds time elapsed
위의 명령어는 ls라는 명령 몇번이나 이벤트를 발생시키는지의 확인입니다.