关于Linux内核性能测试

参考上篇文章,我把自己最近碰到的内核测试方法总结了一下,希望大家指错 🙂

一、概述:
一般意义上的内核测试可能更多的偏重于功能测试,但在内核开发中,内核退化是很严重的问题,特别是在添加新特性的时候,性能测试显得尤为重要。
内核性能的方法是针对Linux内核五大子系统(进程调度子系统、内存管理子系统、虚拟文件子系统、进程通信子系统和网络子系统)的自身特点,测量出Linux内核完成工作量负载的响应时间、CPU时间和CPU利用率等参数,作为衡量标准。

二、内核性能测试开源项目:
http://www.linuxdna.com/
http://kernel-perf.sourceforge.net/

三、Linux内核测试法:

1.Linux测试项目(LTP)
LTP(Linux test project)套件涵盖了内核的大多数接口,如系统调用、内存、IPC、I/O、文件系统和网络。这个项目收集了各种 Linux内核测试工具和相关资料,当前包括了超过 2900个测试用例。

2.可扩展性测试平台(STP)
开放源代码开发实验室 (Open Source Development Labs, OSDL)创建了可扩展测试平台(Scalable Test Platform,STP)系统。STP 是一个自动化的测试平台, STP可以构建内核、设置测试、运行测试,并收集结果,然后进行深入地比较。

3.代码覆盖分析
代码覆盖分析在一个给定的测试运行时,分析出内核中哪些代码行被执行,提示内核的哪些部分还没有被测试到,并指出需要再编写哪些新测试来测试内核的相应部分,以使可以得到更完备的测试。

4.内核回归测试
对Linux内核执行持续多日的回归测试,创建实时的、集中的档案库,以随时获得 Linux内核的快照,内核发生改变,测试人员就可进行测试。

这些方法包括:使用专门的硬件测试设备、软件测试、往内核插入测试代码等
测试一般分三个层次:
1)系统层:包括处理器、内存、硬盘和网络等;
2)应用层:包括锁、线程、堆和API等;
3)微结构层:包括数据队列、循环结构和cache优化。

四、常用测试软件:
1、kernbench (测试CPU吞吐量)
http://freshmeat.net/projects/kernbench/

2、hackbench (测试开销、调度程序的可伸缩性)
http://devresources.linux-foundation.org/craiger/hackbench/

3、tbench (TCP测试)

4、Netbench (网络性能测试,是一个工业标准,用于Samba和WindowsNT这样的文件服务器的压力测试)

5、dbench (测磁盘吞吐量)

6、unixbench (虚拟处理器-VPS性能测试)
下载:http://www.tux.org/pub/tux/benchmarks/System/unixbench/

五、网络性能测试方面:(协议栈测试)
rfc2544规定了网络互联设备测试基准方法(如:吞吐量、延时、丢包率等)
注意:
1、一般要求百兆/千兆的线速
2、采用专门的硬件测试设备 (如:smartbits),软件测试效果不是很好
3、发包的设备必须远强与你现有的设备
4、根据产品的特性要求(市场的要求),平衡吞吐量/延时
5、性能的优化,也可以对协议栈本身进行改进
案例:网卡中断发生频率非常高,有人实践将中断处理模式改为轮询模式,这样大大的提高性能,当然这是在他们专用的应用环境下

六、干扰因素:
1、硬件设备性能
2、测试软件本身消耗
3、系统服务消耗等
4、测试覆盖率问题
5、其他随机因素

七、服务器内核测试:
1、偏重网络、存储两大块
2、多核、集群、大容量存储等具体环境
3、结合具体业务

八、其他
1、测试结果的图形化友好显示,如图表、动态图等
2、性能评定标准,从正确性、可靠性、工作性能三方面进行,相关参数如:响应速度、CPU时间、CPU利用率等,可靠性测试包括NFS 压力测试、内存管理压力测试、文件系统压力测试、多线程压力测试、硬盘I/O 测试、IPC测试、系统调用功能的验证测试、网络压力测试等。
3、综合评定常用的就是打分制

4 thoughts on “关于Linux内核性能测试

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.