工作环境是suse11sp3系统(内核版本3.0.101-0.47.90-default),需要通过perf排查系统性能问题,但是默认是没有perf工具的。
在网上搜索了一下,需要linux-tools工具包,幸好手上有SUSE11sp3 ISO文件,直接在ISO的suse/x86_64目录下
找到了perf-3.0.76-2.10.31.x86_64.rpm 安装包。
尝试安装了一下,报错:
# rpm -ivh perf-3.0.76-2.10.31.x86_64.rpm
error: Failed dependencies:
libnewt.so.0.52()(64bit) is needed by perf-3.0.76-2.10.31.x86_64
libnewt.so.0.52(NEWT_0.52)(64bit) is needed by perf-3.0.76-2.10.31.x86_64
libslang.so.2()(64bit) is needed by perf-3.0.76-2.10.31.x86_64
libslang.so.2(SLANG2)(64bit) is needed by perf-3.0.76-2.10.31.x86_64
继续在网上搜索libnewt相关的软件包(关键词: libnewt which package),找到如下链接:
http://www.linuxfromscratch.org/blfs/view/svn/general/newt.html
注意阅读该网页信息,newt依赖于popt和slang,这两个package必须先按照,否则newt编译出错。
slang and popt URL:
http://www.linuxfromscratch.org/blfs/view/svn/general/slang.html
http://www.linuxfromscratch.org/blfs/view/svn/general/popt.html
popt、slang和newt的编译和安装过程不再赘述,网页上都有详细说明。
安装了libnewt和libslang后还是报错,检查了系统LD_LIBRARY_PATH,路径都正确,而且检查有相关lib文件:
# ll /usr/local/lib/libnewt.so
lrwxrwxrwx 1 root root 15 Dec 26 19:37 /usr/local/lib/libnewt.so -> libnewt.so.0.52
# ll /usr/local/lib/libslang.so
lrwxrwxrwx 1 root root 13 Dec 26 19:36 /usr/local/lib/libslang.so -> libslang.so.2
# echo $LD_LIBRARY_PATH
/usr/lib:/usr/local/lib:/usr/lib64:/lib:/lib64:/usr/local/lib64:/home/zxagent/lib/usr/lib64:/lib:/lib64:/usr/local/lib64
实在没辙了,直接强行安装perf:
rpm -ivh perf-3.0.76-2.10.31.x86_64.rpm --nodeps
安装完成后,检查perf是否成功:
# which perf
/usr/bin/perf
执行perf命令:
perf top -e cycles:k
PerfTop: 1612 irqs/sec kernel:99.9% us: 0.1% guest kernel: 0.0% guest us: 0.0% exact: 0.0% [1000Hz cycles], (all, 32 CPUs)
--------------------------------------------------------------------------------------------------------------------------------------------
samples pcnt function DSO
_______ _____ _________________________ __________________________________________________
8773.00 55.6% intel_idle /lib/modules/3.0.101-0.47.90-default/build/vmlinux
1356.00 8.6% find_busiest_group /lib/modules/3.0.101-0.47.90-default/build/vmlinux
267.00 1.7% __schedule /lib/modules/3.0.101-0.47.90-default/build/vmlinux
258.00 1.6% _raw_spin_lock /lib/modules/3.0.101-0.47.90-default/build/vmlinux
209.00 1.3% cpumask_next_and /lib/modules/3.0.101-0.47.90-default/build/vmlinux
179.00 1.1% find_next_bit /lib/modules/3.0.101-0.47.90-default/build/vmlinux
136.00 0.9% cpuidle_idle_call /lib/modules/3.0.101-0.47.90-default/build/vmlinux
123.00 0.8% native_write_msr_safe /lib/modules/3.0.101-0.47.90-default/build/vmlinux
110.00 0.7% menu_select /lib/modules/3.0.101-0.47.90-default/build/vmlinux
106.00 0.7% apic_timer_interrupt /lib/modules/3.0.101-0.47.90-default/build/vmlinux
105.00 0.7% tick_nohz_stop_sched_tick /lib/modules/3.0.101-0.47.90-default/build/vmlinux
105.00 0.7% cpupri_set /lib/modules/3.0.101-0.47.90-default/build/vmlinux
98.00 0.6% update_curr_rt /lib/modules/3.0.101-0.47.90-default/build/vmlinux
97.00 0.6% load_balance /lib/modules/3.0.101-0.47.90-default/build/vmlinux
87.00 0.6% __hrtimer_start_range_ns /lib/modules/3.0.101-0.47.90-default/build/vmlinux
86.00 0.5% select_nohz_load_balancer /lib/modules/3.0.101-0.47.90-default/build/vmlinux
82.00 0.5% leave_mm /lib/modules/3.0.101-0.47.90-default/build/vmlinux
74.00 0.5% __switch_to /lib/modules/3.0.101-0.47.90-default/build/vmlinux
73.00 0.5% idle_balance /lib/modules/3.0.101-0.47.90-default/build/vmlinux
73.00 0.5% getnstimeofday /lib/modules/3.0.101-0.47.90-default/build/vmlinux
72.00 0.5% timerqueue_add /lib/modules/3.0.101-0.47.90-default/build/vmlinux
71.00 0.4% read_tsc /lib/modules/3.0.101-0.47.90-default/build/vmlinux
69.00 0.4% do_select /lib/modules/3.0.101-0.47.90-default/build/vmlinux
69.00 0.4% hrtimer_interrupt /lib/modules/3.0.101-0.47.90-default/build/vmlinux
67.00 0.4% core_sys_select /lib/modules/3.0.101-0.47.90-default/build/vmlinux
perf可用,也算安装成功了!
PS:
您的支持是对博主最大的鼓励?,感谢您的认真阅读。
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。