简介

Lmbench是一套简易,可移植的,符合ANSI/C标准为UNIX/POSIX而制定的微型测评工具。一般来说,它衡量两个关键特征:反应时间和带宽。

Lmbench旨在使系统开发者深入了解关键操作的基础成本。

本文以银河麒麟/Ubuntu为例。

文末获取【lmbench】工具下载地址

测试方法

1.将lmbench工具拷贝到系统下,(例如:/home/kylin/目录)并解压:

tar -xvf lmbench-3.0-a9-1.tar.bz2 
  • 1

2.进入lmbench目录

cd /home/kylin/lmbench
  • 1

3.如果是飞腾cpu,执行这一步,若是x86跟mips机器,则跳过这一步:

sudo sed -i ‘s/arm/aarch/’ scripts/gnu-os
  • 1

4.第一种方法:
 将提前修改好的config-run、lmbench.config配置文件(文件名要一致,如有不同,则需要改名)复制到 scripts/目录中,并赋权限chmod -R 777 *,然后返回/home/kylin/lmbench 目录执行make results;
第二种方法:
 直接在/home/kylin/lmbench目录执行make results,根据提示信息,一步步完成,测试内存(单位MB)选择时:服务器建议使用10000,桌面系统可按照默认值设置,保证测试能够尽可能的加快,内存的大小与该测试项的测试指标没有关系,本测试项不牵涉到内存的测试;邮件时选择no;
如下图所示:

5.继续在解压缩包的目录里(/home/kylin/lmbench目录)执行:

make see
  • 1

测试过程如下图所示:

6.打开/home/kylin/lmbench/results目录中summary.out文件查看测试结果。

测试结果分析

打开summary.out查看各项指标具体数值。

1.系统基本参数

Tlb pages: 转换后备缓存的页面数
Cache line bytes:高速缓存行字节数
Mem par:存储器分层并行化
Scal load:并行执行的lmbench数目

2.处理器Processor性能【单位:us,数值越小越好】

Null call: 执行getppid需要的时间;
Null I/O: 从/dev/zero读一个字节的时间长A,写一个字节到/dev/null需要的时间长B,A和B取平均值;
Stat: stat一个文件(即得到一个文件的信息)需用的时间;
Open close: open一个文件然后再close它总共需用的时间(不包括读目录和节点的时间);
Slct TCP: 通过TCP网络连接选择100个文件描述符所耗用的时间;
Sig inst: install signal handler所耗用的时间;
Sig hndl: catch signal所耗用的时间;
Fork proc:fork一个完全相同的 process,并把原来的process关掉所耗用的时间;
Exec proc:模拟一个shell进程的工作过程,fork一个新进程执行新命令,所耗用的时间;
Sh proc:模拟最常见情况:fork一个新进程,同时询问系统shell来找到并运行一个新程序所耗用的时间。

3.数学运算【单位:ns,值越小性能越好】
整型:

无符号整型:

浮点型:

双精度型:

4.上下文切换【单位:us,值越小性能越好】

多个进程用unix pipe换连接起来,每个进程从自己的管道中读取token,执行任务,然后将token写给下一个进程。

Context swithing时间包括:切换进程时间,加上恢复进程所有状态所用时间(包括恢复cache状态);
2p/0K:每个进程的size为0(不执行任何任务),进程数为2时上下文切换耗用的时间;
2p/16K:每个进程的size为16K(执行任务),进程数为2时上下文切换耗用的时间。

5.本地通讯延时【单位:us,值越小性能越好】

2p/0k:每个进程的size为0(不执行任何任务),进程数为2时上下文切换耗用的时间;
Pipe:hot potato测试:两个没有具体任务的进程用unix pipe通信,一个token在两个进程间来回传递,传递一个来回所耗用的平均时间;
AF UNIX:同Pipe,不同的是两个进程采用unix socket通信;
UDP:同Pipe,不同的是两个进程采用UDP/IP通信;
RPC/UDP:同Pipe,不同的是两个进程采用sun RPC通信;默认情况下,RPC通过udp协议传送;
TCP:同Pipe,不同的是两个进程采用TCP/IP;
RPC/TCP:同Pipe,不同的是两个进程采用sun RPC通信;指定RPC通过tcp协议传送;
TCP/conn:创建一个AF_INET(aka TCP/IP)socket并连接到远程主机所耗用的时间,这个时间仅指创建socket和建立连接本身,不包括解析主机名等其他动作所用时间。

6.文档、内存延时【单位:us,值越小越好】

0K Create:0K文件创建所花时间;
0K Delete:0K文件删除所花时间;
10K Create:10K文件创建所花时间;
10K Delete:10K文件删除所花时间;
Mmap Latency:将指定文件的开头n个字节map到内存,然后umap,并记录每次map和umap共耗用的时间,记录的是每次耗用时间的最大值;
Prot Fault:保护页延时时间;
Page Fault:缺页延时时间;
100fd selct:对100个文档描述符配置select的时间;

7.本地通信带宽【单位:MB/S,值越大越好】

Pipe:在两个进程间建立一个unix pipe,pipe的每个chunk为64K,通过该管道移动50M数据所用的时间;
AF UNIX:在两个进程间建立一个unix stream socket,每个chunk为64K,通过该socket移动10M数据所用的时间;
TCP:同Pipe,不同的是进程间通过TCP/IP socket通信,传输的数据为3MB;
File reread:读文件并把它们汇总起来所用的时间;
Mmap reread:将文件map到内存中,从内存中读文件并把它们汇总起来所用的时间;
Bcopy(libc):从指定内存区域拷贝指定数目的字节内容到指定的另一个内存区域的速度;
Bcopy(hand):把数据从磁盘上一个位置拷贝到另一个位置所用的时间;
Mem read:累加数据组中的整数值,测试把数据读入processor的带宽;
Mem write:把整数数组的每个成员设置为1,测试写数据到内存的带宽。

8.内存操作延时【单位:ns,值越小性能越好】

本项测试执行lat_mem_rd,将整数数组每第4个元素的值累加起来;测试的是读数据到processor的带宽。

如果测试配置为:执行快速测试,则本测试只测128M内存的情况,否则,将分别测试16M 32M 64M 126M 256M 512M 1024M 的情况;

测试结果:读输出结果中以stride=128开头的段,段中两个字段单位为megabytes,megabytes_per_second;
L1 $:输出结果中以stride=128开头的段中,首字段(size)为0.00098行的第二字段;
L2 $:输出结果中以stride=128开头的段中,首字段(size)为0.12500行的第二字段;
Main mem:最后行的第二字段值;
Rand mem:系统内存随机访问操作系统延时;
Guesses:判断前面得到的L1和L2值差值占其中最大值的百分比,比如大于20%,且L2和Main mem差值占其中最大值的百分比小于20%,则输出“No L2 cache”;否则,判断L1和L2差距与其中最大值的百分比,如果小于20%,则输出“No L1 cache”否则什么也不输出。

更多精彩文章可关注公众号【天耀数码】,公众号回复【lmbench】获取下载地址。

文章知识点与官方知识档案匹配,可进一步学习相关知识
CS入门技能树Linux入门初识Linux29394 人正在系统学习中

[转帖]基本系统调用性能lmbench测试方法和下载的更多相关文章

  1. [转帖]国产CPU性能最全盘点 宜良性竞争优胜劣汰

    国产CPU性能最全盘点 宜良性竞争优胜劣汰 电子工程专辑的网站内容 其实里面说的不尽全面 比如龙芯和申威就放到一块了 一个是 MIPS 一个是Alpha 明显不一样的东西 x86的应该都不行 而且. ...

  2. Android性能优化-减小图片下载大小

    原文链接 https://developer.android.com/topic/performance/network-xfer.html 内容概要 理解图片的格式 PNG JPG WebP 如何选 ...

  3. Java应用异常状态监测

    阿里巴巴中间件技术专栏 老板最近分派了一个任务,说线上客户在部署应用的时候发生了系统级别的OOM,触发了OOM Killer杀掉了应用,让我们解决这个问题. 对于这个任务,我从如下几点开始调研.分析与 ...

  4. linux 性能测试工具Lmbench

    Lmbench是一套简易,可移植的,符合ANSI/C标准为UNIX/POSIX而制定的微型测评工具.一般来说,它衡量两个关键特征:反应时间和带宽.Lmbench旨在使系统开发者深入了解关键操作的基础成 ...

  5. [基准测试]----lmbench

    引言 要评价一个系统的性能,通常有不同的指标,相应的会有不同的测试方法和测试工具,一般来说为了确保测试结果的公平和权威性,会选用比较成熟的商业测试软件.但在特定情形下,只是想要简单比较不同系统或比较一 ...

  6. lmbench的使用方法

    一.引言 要评价一个系统的性能,通常有不同的指标,相应的会有不同的测试方法和测试工具,一般来说为了确保测试结果的公平和权威性,会选用比较成熟的商业测试软件.但在特定情形下,只是想要简单比较不同系统或比 ...

  7. 下载: www.bitmover.com/lmbench,最新版本3.0-a9

    软件说明: lmbench是个用于评价系统综合性能的多平台开源benchmark,能够测试包括文档读写.内存操作.进程创建销毁开销.网络等性能,测试方法简单.Lmbench是个多平台软件,因此能够对同 ...

  8. (工具) 性能测试基准软件 lmBench (待补充)

    1. lmBench 介绍 Lmbench是一套简易,可移植的,符合ANSI/C标准为UNIX/POSIX而制定的微型测评工具.一般来说,它衡量两个关键特征:反应时间和带宽.Lmbench旨在使系统开 ...

  9. PHP函数的实现原理及性能分析

    前言 在任何语言中,函数都是最基本的组成单元.对于php的函数,它具有哪些特点?函数调用是怎么实现的?php函数的性能如何,有什么使用建议?本文将从原理出发进行分析结合实际的性能测试尝试对这些问题进行 ...

  10. 关于Linux系统调用,内核函数【转】

    转自:http://blog.csdn.net/ubuntulover/article/details/5988220 早上听人说到某个程序的一部分是内核态,另一部分是用户态,需要怎么怎么.当时突然想 ...

随机推荐

  1. C++篇:第十四章_编程_知识点大全

    C++篇为本人学C++时所做笔记(特别是疑难杂点),全是硬货,虽然看着枯燥但会让你收益颇丰,可用作学习C++的一大利器 十四.编程 (一)概念 系统函数及其库是 C++语言所必须的,预处理命令不是 C ...

  2. 【华为云技术分享】解密如何使用昇腾AI计算解决方案构建业务引擎

    摘要:昇腾AI计算解决方案以极致算力,端边云融合.全栈创新,开放生态的硬核实力.用户可以使用标准的Matrix接口实现业务引擎,对外释放昇腾AI加速能力. 从卷积神经网络中的矩阵乘法(GEMM)说起 ...

  3. Java 事件链

    Java中的事件机制的参与者有3种角色: 1. event object:就是事件产生时具体的"事件",用于listener的相应的方法之中,作为参数,一般存在于listerner ...

  4. Hugging Face: 代码生成模型的预训练和微调

    和大家分享我们的机器学习工程师 Loubna Ben Allal 在 10 月上海 KubeCon 大会的主题演讲 题目是: 代码生成模型的预训练和微调 演讲介绍了构建和训练大型代码模型比如: Sta ...

  5. 自媒体时代的贤内助——AI 视频云

    视频,通常是一段由活动画面组成的传递信息的内容.在如今这个信息爆炸的时代,我们每天都要在浩瀚的内容海洋中寻找需求的信息.一个视频是否吸引人内容固然是最重要的,但是播放是否流畅,画质是否清晰的影响力也不 ...

  6. Mac 开发 | IDEA 设置 Mybatis 的XML SQL 语句提示

    1.IDEA 链接数据库 2.IDEA 设置数据库方言为链接的数据库方言 3.IDEA SQL 解析范围设置 4. 可以在mapper xml 中写select 测试了.

  7. Golang之文件系统事件监听

    Golang之文件系统事件监听 基本介绍 文件系统事件是指文件系统相关的各种操作和状态变化,当一个应用层的进程操作文件或目录时,会触发system call,内核的notification子系统可以守 ...

  8. 5、SpringBoot连接数据库引入mybatis

    系列导航 springBoot项目打jar包 1.springboot工程新建(单模块) 2.springboot创建多模块工程 3.springboot连接数据库 4.SpringBoot连接数据库 ...

  9. 这才是你应该了解的Redis数据结构!

    深入了解Redis数据结构 Redis,作为一种高性能的内存数据库,支持多种数据结构,从简单的字符串到复杂的哈希表.在这篇博文中,我们将深入探讨Redis的一些主要数据结构,并通过详细的例子展示它们的 ...

  10. paddlespeech asr脚本demo

    概述 paddlespeech是百度飞桨平台的开源工具包,主要用于语音和音频的分析处理,其中包含多个可选模型,提供语音识别.语音合成.说话人验证.关键词识别.音频分类和语音翻译等功能. 本文介绍利用p ...