2010년 12월 25일 토요일

Oprofile을 이용한 CPU 자원 사용 프로파일링

Oprofile
• 실행중인 프로세스의 CPU Usage를 프로파일링
• 실행중인 프로세스의 어떤 함수가 CPU 자원을 많이 사용하는지를 식별
• Database 개발자에게 자주 사용됨
• 특정 함수가 많은 자원을 사용할 경우, 프로그램은 그 함수 콜을 줄일 수 있는 방법으로 재설계될 수 있음
• CPU 사용률이 낮은 장비(I/O 바운딩 서버나 Mutex 대기와 같은)에서는 별로 쓸모가 없음
• How to use
   – $ opcontrol --start (--no-vmlinux)
   – 여기에서 실제 벤치마킹 수행
   – $ opcontrol --dump
   – $ opcontrol --shutdown
   – $ opreport -l  /usr/local/bin/mysqld



실행 예제
[root@TestServer:/mysql/bin]$ opcontrol --start --no-vmlinux
Using default event: CPU_CLK_UNHALTED:100000:0:1:1
Using 2.6+ OProfile kernel interface.
Using log file /var/lib/oprofile/samples/oprofiled.log
Daemon started.
Profiler running.

## ------------------------------------------------------------
## Doing benchmarking here
## sysbnech ....
## ------------------------------------------------------------

[root@TestServer:/mysql/bin]$ opcontrol --dump

[root@TestServer:/mysql/bin]$ opcontrol --shutdown
Stopping profiling.
Killing daemon.

[root@TestServer:/mysql/bin]$ opreport -l /mysql/bin/mysqld
CPU: Core 2, speed 2394.05 MHz (estimated)
Counted CPU_CLK_UNHALTED events (Clock cycles when not halted) with a unit mask of 0x00 (Unhalted core cycles) count 100000
samples  %        symbol name
196      52.5469  sync_array_print_long_waits
156      41.8231  srv_lock_timeout_thread
19        5.0938  sync_array_get_nth_cell
1         0.2681  my_pthread_fastmutex_lock
1         0.2681  os_event_reset

댓글 없음:

댓글 쓰기