1. 概述
VTune是Intel一个比较强大的性能分析软件。主要包括三个小工具:
(1)Performance Analyzer:性能分析,找到软件性能比较热的部分,一般也就是性能瓶颈的关键点。
(2)Intel Threading Checker:用于查找线程错误, 能够检测资源竞争、线程死锁等问题
(3)Intel Threading Profiler:线程性能检测工具,多线程可能存在负载比平衡, 同步开销过大等线程相关的性能问题,该工具可以帮你发现每一个线程每一时刻的状态。
2. 安装
linux上,解压文件vtune_amplifier_xe_2011_update1.tar.gz;
执行install.sh脚本,跟据提示下一步就可以;
安装一个windows客户端VTune_Amplifier_XE_2011_update3_setup.exe,用于将收集的数据进行图形界面展示。
3. 使用
VTune有两种工作方式,我们一般使用的是远程模式,
本地模式是被分析的程序和VTune同时工作在同一台机器上
远程模式是指程序在一台机器上,VTune装在另一台机器上
1)启动需要分析的应用程序,以searcher_server为例
/home/admin/intel/vtune_amplifier_xe_2011/bin64/amplxe-cl -collect hotspots /home/admin/search/bin/is_searcher_server -c /home/admin/search/conf/searcher_server.cfg -l /home/admin/search/conf/searcher_log.cfg
-k restart -d
其中,amplxe-cl是指列出本机所支持的分析类型,这里选择-collect hotspots收集热点,
还有amplxe-cl --report-list; 可支持的报告类型。
更多见http://software.intel.com/zh-cn/blogs/2010/11/10/amplxe-cl/
后面就是is_searcher_server启动参数
searcher_searver启动后,会自动生成一个数据文件,名为r000hs(之后生成的会自动命名为r001hs,r002hs...)
2)启动其它服务程序,在施压一段时间后,停止被分析的程序(也就是这里的is_searcher_server)
这时,r000hs里存的就是收集的数据信息。要注意,一定要停止被分析程序,否则数据不会生成到r000hs里面。
3)启动windows客户端VTune_Amplifier_XE_2011_update3_setup,将数据r000hs导入,步骤如下:
file->open->result,将r000hs加载,但此时会很慢,解决办法,使用sumba共享服务器,将linux文件在windows下共享,
sudo su进入root权限,
修改samba密码
smbpasswd -a admin;
New SMB password:
Retype
new
SMB password:
启动samba服务
/etc/init.d/smb start
|
在win7下,地址栏输入测试机的ip 10.20.137.40,就可以访问了,也可以将10.20.137.40映射为网络驱动器,方法,
计算机右键->映射网络驱动器,在弹出的界面,输入相应的路径,如图所示,
之后将\\10.20.137.40\admin\search\bin\r000hs 加载。
4)加载后,界面如图所示,
其中Top-down Tree以树形结构展示每个调用所花费的时间及所占比,可以从时间花费最多的地方往下一层一层的展开,找到关键函数,分析其性能,
上图我们可以看到,关键函数evaluate所花费的时间比占11.3%.
另外可以通过Bottom-up来查看函数/模块/线程调用的时间耗费,如图所示,
其中,Function /call Stack是指函数调用的时间,还有其它选项,使用者自已点点就明白了。
5)补充说明,加载后如果看不函数信息,需要添加路径,在Module里找到被分析的程序(is_searcher_server),
双击后,在弹出的对话框中,将服务的路径加上去,然后点击Analyse Type窗口右上角的Re-resolve,就可以看到函数调用情况了。
vtune只能告诉我们性能热区,具体为什么成为热区,需要使用者跟据自已的经验和对项目的理解去分析并试验,从而优化性能。
网络性能分析工具
Network性能分析工具
ifconfig
ethereal
tethereal
iptraf
iwconfig
nfsstat
mrtg
ntop
netstat
cat /proc/sys/net
Network性能调优工具
ifconfig
iwconfig
sysctl
Network性能调整
一个应用系统出现如下情况时,我们认为该系统存在网络 性能问题:
网络接口的吞吐量小于期望值;
出现大量的丢包现象;
出现大量的冲突现象。
Network性能调整方法:
1、调整网卡的参数。
# ethtool eth0
Settings for eth0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised auto-negotiation: Yes
Speed: 100Mb/s
Duplex: Half
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: d
Wake-on: d
Current message level: 0x00000007 (7)
Link detected: yes
#ethtool -s eth0 duplex full
#ifconfig eth0 mtu 9000 up
2、增加网络缓冲区和包的队列。
# cat /proc/sys/net/ipv4/tcp_mem
196608 262144 393216
# cat /proc/sys/net/core/rmem_default
135168
# cat /proc/sys/net/core/rmem_max
131071
# cat /proc/sys/net/core/wmem_default
135168
# cat /proc/sys/net/core/wmem_max
131071
# cat /proc/sys/net/core/optmem_max
20480
# cat /proc/sys/net/core/netdev_max_backlog
300
# sysctl net.core.rmem_max
net.core.rmem_max = 131071
# sysctl -w net.core.rmem_max=135168
net.core.rmem_max = 135168
3、调整Webserving。
# sysctl net.ipv4.tcp_tw_reuse
net.ipv4.tcp_tw_reuse = 0
# sysctl -w net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_tw_reuse = 1
# sysctl net.ipv4.tcp_tw_recycle
net.ipv4.tcp_tw_recycle = 0
# sysctl -w net.ipv4.tcp_tw_recycle=1
net.ipv4.tcp_tw_recycle = 1
日志分析工具
淘宝性能测试团队针对目前最主要的Profiler格式的超时日志,用ruby语言自主开发了日志分析工具,实现在tWork执行日志分析和展示分析结果。分析结果包括:日志的总体统计信息、平均响应时间、区间分布、耗时排名。同时,结果展示结合了图表,使得对日志分析更加直观、方便。
日志分析结果的三个维度:
1) 平均响应时间:统计日志中同一个访问请求的每个方法或模板的平均响应时间。
通过该维度,可以直观的看出,测试中响应时间消耗较大的方法或模板。如图17所示。
2) 区间分布:按照响应时间划分出的9个区间,统计每个方法或模板的响应时间落入该区间的次数。
通过该维度,可以直观的看出,方法或模版的响应时间在大多数情况下落在哪个区间内,从而判断该响应时间是否正常。
![](http://docs.alibaba-inc.com/download/attachments/57566884/iostat.png?version=3&modificationDate=1315892190000)
3) 耗时排名:统计每次请求中响应时间最大的5个方法或模板出现的次数。
通过该维度,可以直观的看出,所有的超时请求主要是由于哪些方法或模板引起的。
![](http://docs.alibaba-inc.com/download/attachments/57566884/1.png?version=1&modificationDate=1315892254000)