Home > Erlang探索 > LMbench 实用的微观性能分析工具

LMbench 实用的微观性能分析工具

October 9th, 2010

原创文章,转载请注明: 转载自系统技术非业余研究

本文链接地址: LMbench 实用的微观性能分析工具

我们在做高性能服务的时候,通常需要避免7宗罪,比如说内存拷贝,昂贵的系统调用等等。 但是这些罪的代价是多少,我们并不清楚。 在设计的时候,我们会需要根据数据去做方案的取舍。但是这些测量数据哪里来呢? google大神是个很好的地方,但是有很多缺点,首先你需要的知识是分散的,第二你需要的知识是二手的。 这时候LMbench来救助了。

LMbench – Tools for Performance Analysis
官方网站: http://www.bitmover.com/lmbench/

What is LMbench?
* Suite of simple, portable benchmarks
* Compares different systems performance
* Results available for most major vendors (SUN, HP, IBM, DEC, SGI, PCs including 200 Mhz P6’s)
* Free software, covered by the GNU General Public License.

* Bandwidth benchmarks
o Cached file read
o Memory copy (bcopy)
o Memory read
o Memory write
o Pipe
o TCP
* Latency benchmarks
o Context switching.
o Networking: connection establishment, pipe, TCP, UDP, and RPC hot potato
o File system creates and deletes.
o Process creation.
o Signal handling
o System call overhead
o Memory read latency
* Miscellanious
o Processor clock rate calculation

可以看出,他主要测量2个方面的东西: 带宽和延时, 涉及到系统组成的很底层。不多说了,我们在ubuntu下实践下:

# apt-get build-dep lmbench
# apt-get source lmbench
# cd lmbench-3.0-a9/
# tar xzvf lmbench-3.0-a9.tgz 
# cd lmbench-3.0-a9
# make  #如果不错意外的话,编译顺利完成

我们这时候可以看到bin目录有很多的工具程序,用于测量系统的方方面面. 这些工具可以单独使用, 在doc目录的文档里面又每个工具的原理和设计思想以及如何使用.

#make results

这时候会问你很多问题, 回车默认就好, 当问到文件的临时目录时,请确保你的目录又足够的空间,否则会失败; 问到mail测试结果的时候选择NO.不出意外的话,系统开始干活, 测量的结果保存在results目录里面.

还想再运行的话:

#make rerun

看测试的summary的话:

#make see

在results目录下生成了个summary.out的文本文件.

我摘录了点:
Lmbench说内存操作还是很慢:
Local Communication bandwidths in MB/s – bigger is better
—————————————————————————–
Host OS Pipe AF TCP File Mmap Bcopy Bcopy Mem Mem
UNIX reread reread (libc) (hand) read write
——— ————- —- —- —- —— —— —— —— —- —–
my174.cm4 Linux 2.6.18- 1282 2672 2707 3879.2 6664.8 2778.0 3014.8 4559 4408.

上下文切换也要命:
Context switching – times in microseconds – smaller is better
————————————————————————-
Host OS 2p/0K 2p/16K 2p/64K 8p/16K 8p/64K 16p/16K 16p/64K
ctxsw ctxsw ctxsw ctxsw ctxsw ctxsw ctxsw
——— ————- —— —— —— —— —— ——- ——-
my174.cm4 Linux 2.6.18- 6.1100 7.0200 6.1100 8.7400 7.7200 8.96000 9.62000

系统调用快了很多,但是还是慢:
Processor, Processes – times in microseconds – smaller is better
——————————————————————————
Host OS Mhz null null open slct sig sig fork exec sh
call I/O stat clos TCP inst hndl proc proc proc
——— ————- —- —- —- —- —- —- —- —- —- —- —-
my174.cm4 Linux 2.6.18- 1593 0.09 0.16 1.01 1.64 5.48 0.20 1.86 184. 702. 2334

数学计算就是快:
Basic integer operations – times in nanoseconds – smaller is better
——————————————————————-
Host OS intgr intgr intgr intgr intgr
bit add mul div mod
——— ————- —— —— —— —— ——
my174.cm4 Linux 2.6.18- 0.6300 0.3100 0.2200 15.1 14.4

点击查看我的机器的测试结果

玩的开心.

Post Footer automatically generated by wp-posturl plugin for wordpress.

Categories: Erlang探索 Tags: , ,
  1. houmingyuan
    October 13th, 2010 at 16:18 | #1

    这个测试运行时间需要好长啊,两个小时了,还在后台跑呢。

    Yu Feng Reply:

    不着急,需要点时间,来杯coffee?

    fuchao Reply:

    进行测试配置时,有两个地方需要修改:TestMem-一般使用128-512即可,strip-一般使用512-1024,当然如果你的测试目标明确,在测试分类的时候,选择harware/os/app还是很有效的。
    GoodLuck!

    Yu Feng Reply:

    多谢指点,测试参数当然要知道所有的细节。

  2. 赵政
    February 21st, 2011 at 00:19 | #2

    你根据什么标准评价你的测试结果 像你说的
    —>内存操作还是很慢 这些
    我的意思是你怎么分析数据的? 我没看懂

    Yu Feng Reply:

    你可以比较下内存操作和整数运算的差距

  3. March 18th, 2012 at 16:29 | #3

    这个测试的结果内容很丰富,很多都不知道啥含义。 不过如果都能理解,对于CPU、内存、filesystem的操作应该都有一定的理解了。

    Yu Feng Reply:

    做c高性能c程序的苦逼,对上面的参数是要能背的。

Comments are closed.