首页 > 其他分享 >Lmbench 的使用方法以及解析运行结果

Lmbench 的使用方法以及解析运行结果

时间:2024-04-26 11:59:13浏览次数:24  
标签:文件 Lmbench TCP 时间 内存 测试 进程 解析 运行

1. Lmbench 简介

Lmbench 是一款简易可以移植的内存测试工具,其主要功能有,带宽测评(读取缓存文件、拷贝内存、读/写内存、管道、TCP),延时测评(上下文切换、网络、文件系统的建立和删除、进程创建、信号处理、上层系统调用、内存读入反应时间)等功能。

2. 下载和安装

官网地址:http://www.bitmover.com/lmbench/
下载连接:lmbench-3.0

imaginemiracle:Downloads$ unzip lmbench-3.0-a9.zip

需要注意的是,目前解压出的 lmbench 中所有文件都不可被执行,当直接执行 make 编译后将会看到类似有 Permission denied 等一系列错误。

这里首先需要更改所有文件的权限:

imaginemiracle:Downloads$ sudo chmod 777 -R lmbench-3.0-a9/

进入 lmbench 目录,其目录结构如下。

imaginemiracle:Downloads$ cd lmbench-3.0-a9/
imaginemiracle:lmbench-3.0-a9$ ls
ACKNOWLEDGEMENTS  CHANGES    COPYING    doc              Makefile  results  src
bin               ChangeSet  COPYING-2  hbench-REBUTTAL  README    scripts

3. 使用 Lmbench 测试

执行 make results,执行后将会有以下选项提示需要设置:

  • MULTIPLE COPIES: 同时运行并行测试,对应生成结果中的 scal load 项;
  • Job placement selection: 作业调度控制方法,默认选 1,表示允许作业调度;
  • Options to control job placement: 默认选 1
  • Memory: 设置为大于 4 倍的 cache size,该值越大结果越精确,同时运行时间越长;
  • SUBSET: 要运行的子集,包含 ALL / HARWARE / OS / DEVELOPMENT,默认选 all
  • FASTMEM、SLOWFS、DISKS、REMOTE… 等选项,均保持默认即可。

设置完成后测试程序开始运行,需要注意运行时间较久,需耐心等待,或先做其他事情至少 10 min 后再看。

4. 查看结果

执行 make see 查看运行结果,若只出现两行命令,显示运行结果输出到了 summary.out 文件中,则直接查看该文件即可。cat ./results/summary.out
将会看到如下输出:

在这里插入图片描述

4.1. 系统基本信息

输出结果中开始显示系统的基本参数信息。

在这里插入图片描述
其中:

  • tlb: 表示转换后备缓存的页面数;
  • cache line bytes: 高速缓存行字节数
  • mem par: 存储器分层并行化;
  • scal load: 并行执行的 Lmbench 数目。

4.2. 处理器 Processor 性能

如下输出结果单位均为 us,数值越小表示性能越好。

在这里插入图片描述

  • null call: 执行 getppid 需要的时间;
  • null I/O: 从 /dev/zero 读取一个字节的时长 t1,写一个字节到 /dev/null 的时长 t2t1、t2 取平均值即为该项结果;
  • stat: stat 一个文件(即得到一个文件的信息)所需时长;
  • open clos: open 一个文件接着再 close 掉该文件一共所用时间(不包含读目录和节点的时间);
  • slct TCP: 通过 TCP 网络连接选择 100 个文件描述符所消耗的时间;
  • sig inst: install signal 所耗时长;
  • sig hndl: handler signal 所耗时长;
  • fork proc: fork 一个完全相同的 process,并把原来的 process 关掉一共所消耗的时间;
  • exec proc: 模拟一个 shell 进程的工作过程:fork 一个新进程执行新命令消耗的时间。
  • sh proc: fork 一个进程,同时询问系统 shell 来找到并运行一个新程序所用时间。

4.3. 数学运算

如下输出结果单位均为 ns,数值越小表示性能越好。

(1) 整型计算

在这里插入图片描述
(2) 无符号整型计算

在这里插入图片描述
(3) 浮点型计算

在这里插入图片描述
(4) 双精度浮点型计算

在这里插入图片描述

4.4. 上下文切换

如下输出结果单位均为 us,数值越小表示性能越好。

在这里插入图片描述
多个进程用 unix pipe 环连接起来,每个进程从自己的管道中读取 token,执行任务,然后将 token 写给下一个进程。

context swithing 时间包括:切换进程的时间,加上恢复进程所有状态所用的时间(包含恢复 cache 状态)。

  • 2p/0k: 每个进程的 size 为 0(不执行任何任务),进程数为 2 时上下文切换所消耗的时间;
  • 2p/16k: 每个进程 size 为 16K(执行任务),进程数为 2 时上下文切换所消耗的时间;

之后的测试项以此类推。

4.5. 本地通讯时延

如下输出结果单位均为 us,数值越小表示性能越好。

在这里插入图片描述

  • 2p/0k: 每个进程的 size 为 0(不执行任何任务),进程数为 2 时上下文切换所消耗的时间;
  • Pipe: 即所谓的 hot potato 测试,两个没有具体任务的进程之间使用 pipe 通信,一个 token 在两个进程间来回传递,传递一个来回所消耗时长的平均值;
  • AF UNIX: 同 Pipe 测试项,但进程间通信使用的是 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: 创建 socket 描述符和建立连接所用时间。

4.6. 文件、内存延时

如下输出结果单位均为 us,数值越小表示性能越好。

在这里插入图片描述

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

4.7. 本地通信带宽

如下输出结果单位均为 MB/s,数值越大表示性能越好。

在这里插入图片描述

  • Pipe: 在两个进程建立 pipepipe 的每个 chunk 为 64K,通过该管道移动 50MB 数据所消耗的时间;
  • AF UNIX: 两个进程之间建立 unix stream socket 连接,每个 chunk 为 64K,通过该 socket 传输 10MB 数据所用的时间;
  • TCP: 同 Pipe 测试项,但进程间使用 TCP/IP socket 通信,传输数据量为 3MB
  • File reread: 读文件并将其汇总一起所用的时间;
  • Mmap reread: 将文件 mmap 到内存中,从内存中读文件并将其汇总一起所用时间;
  • Bcopy(libc): do bw_mem $i bcopy,从指定内存区域拷贝指定数量的字节内容到另一个指定内存区域的速度;
  • Bcopy(hand): do bw_mem %i fcp,把数据从磁盘的一个位置拷贝到另一个位置所用的时间;
  • Mem read: bw_mem $i frd,累加数组中的整数值,测试把数据读入 processor 的带宽;
  • Mem write: do bw_mem $i fwr,把整数数组的每个成员设置为 1,测试写数据到内存的带宽。

4.8. 内存操作延时

如下输出结果单位均为 ns,数值越小表示性能越好。

在这里插入图片描述
本地测试执行 lat_mem_rd,将整数数组中每第 4 个元素的值累加起来;测试的是读数据到 processor 的带宽。

  • L1: 缓存1
  • L2: 缓存2
  • Main Mem: 连续内存
  • Rand Mem: 内存随机访问延时
  • Guesses:
    假如 L1 和 L2 近似,会显示 “No L1 cache?”
    假如 L2 和 Main Mem 近似,会显示 “No L2 cache?”
  •  
  •  
  • 转载:https://www.codetd.com/article/14921830
  •  
  •  

标签:文件,Lmbench,TCP,时间,内存,测试,进程,解析,运行
From: https://www.cnblogs.com/ylxtiankong/p/18159724

相关文章

  • 微机的硬件组成与运行
    微机,也称为微型计算机或微型机,是由大规模集成电路组成的体积较小的电子计算机,其主要的硬件为总线,中央处理器(CPU),存储设备(RAM),输入输出设备(I/O)等组成,微机的硬件组成是一个复杂而精细的系统,各个部件相互协作,共同实现了计算机的各种功能。由于所学有限,本文章仅研究cpu,ram,与IO设备......
  • 中电金信:深度解析|数字化营销运营体系搭建
    ​如何更好更快地梳理好体系搭建思路,稳步实现落地?下文将为大家明确搭建的推进步骤、执行要点,帮助商业银行理顺数字化营销运营体系的“点”“线”“面”~​ ​ 与所有转型的曲折、阵痛等特征一样,商业银行构建数字化营销运营体系过程中,亦走过一些弯路,包括: ​ 我们看到......
  • bash脚本的输入参数解析
    #!/usr/bin/envbash#############################################用途:用于脚本输入参数的规范处理#测试:假设文件名为test.sh,执行./test.sh--daemon--helper=abc--host_type=os############################################curdir=`dirname"$0"`echo"curdi......
  • 在 windows 上运行的 podman 默认的挂载相对路径是什么
    我在windows运行podman当成docker的代替品,从网上抄了ollama的部署命令,发现里面存在一个相对路径的挂载文件夹。我期望拿到ollama的下载内容,需要寻找到podman默认的挂载路径,但在网上找了一圈,可能是我的关键词问题,没有找到,于是记录本文期望能帮到大家如下面命令podman......
  • 【爆款推荐】初中中考阅读理解难题一网打尽!句子结构深度解析+答案揭秘,助你轻松冲刺高
    PDF格式公众号回复关键字:ZKYDT011原文1Thewriterlostherfatherattheageoffour,didn’tshe?解析1Thewriter这位作者,lost失去,herfather她的父亲,attheageoffour在4岁的时候,didn’tshe?不是吗?这位作家四岁时失去了父亲,不是吗?2Everythingcha......
  • 学习笔记447—本地部署 Llama3 – 8B/70B 大模型!最简单的方法: 支持CPU /GPU运行 【3种
    本地部署Llama3–8B/70B大模型!最简单的方法:支持CPU/GPU运行【3种方案】目前在开源大模型领域,Llama3无疑是最强的!这次Meta不仅免费公布了8B和70B两个性能强悍的大模型,400B也即将发布,这是可以和GPT-4对打的存在!今天我们就来介绍3各本地部署方法,简单易懂,非常适合新手!1.G......
  • 深入解析JavaScript的块级作用域和for循环的性能考量
    "当然,以下是一篇关于JavaScript中块级作用域和循环的深入分析的博客文章草稿:深入解析JavaScript的块级作用域和for循环的性能考量块级作用域的基本理解在JavaScript中,块级作用域是由大括号{}定义的作用域,限定了变量的可见性和生命周期。通常情况下,如if、try...catch以及with等......
  • zuul.core解析
    zuul.core解析这里以zuul1.2.3为例子(1.x最后一个版本)IZuulFilterzuul的核心实现,主要是filter函数功能booleanshouldFilter();用于判断是否需要执行该filterObjectrun();执行filter的处理逻辑ZuulFilterIZuulFilter的抽象实现,主要函数有以下几个:函......
  • maixcam如何无脑运行运行别人的模型(以安全帽模型为例)
    maixcam如何无脑运行运行别人的模型(以安全帽模型为例)本文章主要讲如何部署上传的模型文件,以及如果你要把你模型按照该流程应该怎么修改,你可以通过该文章得到你想要的应该,该应用也包含的退出按钮,是屏幕退出按钮,因为屏幕退出方便,所以我引用了sipeed的退出图片,之前的应用没设置退出......
  • spark standalone同时运行pyspark和spark-shell
    需要限制资源数量,使用spark.cores.max或--total-executor-cores来指定最大核数。假设集群一共4c5.6gpyspark(使用2c2g)frompyspark.sqlimportSparkSessionspark=SparkSession.builder\.master("spark://worker1:7077")\.appName("pysparkApp")\.......