分类:
2011-12-26 10:41:06
原文地址:《Linux 性能及调优指南》2.4 作者:railon
-------------------------------------------------------------------------------------------
LMbench是一套微基准,可以用来分析不同操作系统的设定,如启用SELinux与未启用SELinux的系统。包括LMbench在内的基准 可以度量多种操作系统的例行程序,如上下文转换、本地通讯、内存带宽和文件操作。LMbench使用很简单,只需要知道三个重要的命令。
▶ make results:首次运行LMbench时,它会提示系统配置的一些详细信息和哪些测试会被执行。
▶ make rerun:在初始化配置并完成首次运行基准后,使用make rerun命令可以重复基准使用配置由make results提供的。
▶ make see:最后在运行最少三次后,可以使用make see命令查看结果。显示的结果可以被复制到制表软件用于后续分析或图形化展示。
可以在 找到LMbench
版权所有,尊重他人劳动成果,转载时请注明作者和原始出处及本声明。
原文名称:《Linux Performance and Tuning Guidelines》
原文地址:
-------------------------------------------------------------------------------------------
IOzone是一个文件系统的基准程序,可以用来模拟多种不同的硬盘访问模式。IOzone的配置非常丰富,所以可以比较准确的模拟特定负载。通过使用不同的块大小,IOzone可以写一个或多个不同大小的文件。
IOzone提供一个功能非常强大且自动化的基准测试模式,可以高效地定义负载属性如文件大小、I/O大小和访问模式。如果要评估满足数据库负载的文件系统,需要在IOzone创建一个随机访问模式大块的大文件代替顺序访问小块的大文件。IOzone的重要选项有:
-b
告诉IOzone将结果存储为微软Excel兼容的格式。
-C
显示每个子进程输出内容(可以用来检查所有子进程是否真正同时运行)
-f
用来告诉IOzone数据存储的位置。
-i
这个选项用来定义运行哪些测试。首次运行你不得不定义-i 0来生成测试文件。常用的测试有-i 1用于顺序读取、-i 2用于随机读写访问和-i 8用于混合随机访问。
-h
显示帮助
-r
告诉IOzone测试的记录I/O大小。记录大小要尽可能的接近目标负载。
-k
使用2.6内核的异步I/O属性,这个经常用在数据库中,如IBM DB2。
-m
如果目标应用程序使用多个内部buffer,可以使用-m来模拟这种行为。
-s
指定基准测试的文件大小。对于异步文件系统(大多数文件系统的默认挂载选项)IOzone应使用至少两倍于系统内存的文件大小,以便能真实的度量硬盘的性能。也可以使用MB或GB指定大小,只要直接在文件大小后使用m或g即可。
-+u
在测试过程中,用于度量处理器使用情况的开关。
注释:任何基准使用的文件如果合适系统的内存并存储在异步的文件系统中,所测量的将是内存吞度量而不是硬盘子系统的性能。所以你应该使用sync选项挂载文件系统或使用大小为系统内存两倍的文件。
使用IOzone测量特定硬盘子系统随机读取的性能,测试文件存储在/perf,文件大小为10GB,I/O大小为32KB(这些特性模仿一个简单的数据库)。如下:
例子2-26:IOzone命令示例
---------------------------------------------------------------------------
./iozone -b results.xls -R -i 0 -i 2 -f /perf/iozone.file -r 32 -s 10g
---------------------------------------------------------------------------
最后,将获得的结果导入到你的制表软件中并转换成图表。使用图形化的输出可以让分析大量数据和确定趋势变得更容易。例子2-16的输出结果图形化显示如图2-17。
图2-17:例子2-26结的图形化结果
如果IOzone所使用文件大小与系统内存或cache相当,可以获得关于cache和内存吞吐量的数据。应该注意的是由于文件系统开销IOzone只能报告系统带宽的70-80%
你可以在找到IOzone。
-------------------------------------------------------------------------------------------
netperf是一个专注于TCP/IP网络性能的基准工具。它支持UNIX domain socket和SCTP基准测试。
netperf是基于客户端-服务器模型。netserver运行在目标系统而netperf运行在客户端。netperf控制netserver 并传送配置信息到netserver,产生网络通讯,通过一个控制链接从netserver得到结果,这个控制链接与实际的基准链接是分开的。在基准测试 过程中,控制链接是不会产生任何流量的,所以不会对结果产生任何影响。netperf也具有报表功能包括CPU使用情况报表。本文在写作时稳定版本为 2.4.3。
netperf可以产生几种类型的网络流量。大体上可以将它们分为两类:批量数据传输和请求/响应。你应该注意到netperf每次只能使用一个套 接字。下个版本的netperf(netperf4)将全面支持并发会话的基准测试。此时我们可以执行多个会话的基准测试,正如下面所描述的。
▶ 批量数据传输
批量数据传输为网络基准测试中最为常用的量度指标。通过一秒钟传输的数据总量来测量批量数据传输。它模拟大文件的传输,如多媒体流和FTP数据传输。
▶ 请求/响应类型
这模拟了请求/响应类型的网络流量,测量每一秒钟交易的次数。对于在线交易应用程序请求/响应流量类型是典型的,如web服务器、数据库服务器、邮 件服务器、文件服务器(管理小文件或中等文件)和目录服务器。在实际的环境中,同数据交换一样会话的建立和终结也会被执行。要模拟这个,需要采用 TCP_CRR类型。
▶ 并发会话
netperf当前稳定版是不支持并发多会话的基准测试,但我们可以通过同时产生多了netperf实例来执行多个基准测试,如下:
----------------------------------------------------------------------
for i in ‘seq 1 10‘; do netperf -t TCP_CRR -H target.example.com -i 10 -P 0
&; done
----------------------------------------------------------------------
我们来了解一些常用选项。
全局选项:
-A 变更远端系统发送和接收buffer alignment
-b Burst of packet in stream test
-H
-t
TCP_STREAM 批量数据传输基准
TCP_MAERTS 与TCP_STREAM相似,除了流的方向相反。
TCP_SENDFILE 与TCP_STREAM相似,除了使用sendfile()代替send(),这导致零复制操作。
UDP_STREAM 与TCP_STREAM相似,除了使用UDP。
TCP_RR 请求/相应类型流量基准。
TCP_CC TCP连接/关闭基准。没有请求和响应包被交换。
TCP_CRR 执行连接/请求/相应/关闭操作。 与禁用HTTP keepalive的HTTP1.0/1.1会话相似。
UDP_RR 与TCP_RR相同除了使用UDP。
-l
-c 本地CPU使用率报告
-C 远端CPU使用率报告
注释:CPU使用率报告在一些平台上可能不是很准确。请在你执行基准测试前确认其准确性。
-I
-i
-s
用于TCP_STREAM, TCP_MAERTS, TCP_SENDFILE, UDP_STREAM的选项
-m
用于TCP_RR, TCP_CC, TCP_CRR, UDP_RR的选项
-r
下面为netperf的TCP_CRR类型基准的输出示例。
例子2-27:TCP_CRR基准结果示例
当你执行基准测试时,使用netperf自带的例子测试脚本是非常聪明做法。变更脚本中变量,你可以得到想要的基准测试。这些脚本存储在netperf包doc/examples/目录下。
关于更多详细内容,参见
《Linux 性能及调优指南》2.4.4 其它有用工具
-------------------------------------------------------------------------------------------
还有一些有用的基准工具。你必须要熟悉这些基准工具的特性,以便选择到符合你需求的工具。
表2-3:其它基准测试工具