下載
使用步驟
Initial and setup
$ opcontrol --init $ opcontrol --reset $ opcontrol --setup --no-vmlinux --separate=library $ opcontrol --start--separate=none: 只想看程式本身的 function
--separate=lib: 想連程式使用到的library都一起看到
適度調整取樣率
啟動想分析的 program
$ ./app
Stop
$ opcontrol --dump $ opcontrol --stop $ opcontrol -h
Analysis
$ opreport -l ./app CPU: CPU with timer interrupt, speed 1999.97 MHz (estimated) Profiling through timer interrupt samples % image name symbol name 7251 30.3186 libx264.so.128 x264_cavlc_init 6247 26.1206 libx264.so.128 x264_coeff_level_run16 3018 12.6192 libx264.so.128 x264_analyse_init_costs encoder/analyse.c:292 1496 6.2552 libavcodec.so.52.72.2 /opt/ffmpeg-0.6.5/lib/libavcodec.so.52.72.2 1426 5.9625 libc-2.12.so __strcmp_sse42 1120 4.6831 libm-2.12.so __ieee754_log2f 384 1.6056 libavformat.so.52.64.2 /opt/ffmpeg-0.6.5/lib/libavformat.so.52.64.2 329 1.3756 libc-2.12.so memcpy 239 0.9993 libc-2.12.so _int_malloc 213 0.8906 libm-2.12.so __ieee754_pow 180 0.7526 libx264.so.128 x264_cqm_init
$ opannotate --source ./app ... (執行次數) (花費比例) :static uint64_t pop_buffer_value(struct transient * trans) 11510 1.9661 :{ /* pop_buffer_value total: 89901 15.3566 */ : uint64_t val; : 10227 1.7469 : if (!trans->remaining) { : fprintf(stderr, "BUG: popping empty buffer !\n"); : exit(EXIT_FAILURE); : } : : val = get_buffer_value(trans->buffer, 0); 2281 0.3896 : trans->remaining--; 2296 0.3922 : trans->buffer += kernel_pointer_size; : return val; 10454 1.7857 :} ...
在 AWS EC2 上使用 oprofile
opcontrol --deinit modprobe oprofile timer=1 opcontrol --reset opcontrol --no-vmlinux --separate=library opcontrol --start
參考資料
沒有留言:
張貼留言