iperf3-性能测试

iperf3-性能测试

    • 安装
      • 1.apt安装
      • 2.源码安装
    • 使用方法
    • iperf原理
    • 测试
    • 参考文档
    • 性能测试
        • 客户端
        • 服务端

官方文档:https://iperf.fr/iperf-doc.php

安装

1.apt安装

sudo apt-get install iperf3

2.源码安装

# 按照官方说明安装
./configure
make
sudo make install

执行编译报错:

iperf3: error while loading shared libraries: libiperf.so.0: cannot open shared object file: No such file or directory解决:
./configure
make
sudo ldconfig
sudo make install

ldconfig命令的用途主要是在默认搜寻目录 /lib和 /usr/lib以及动态库配置文件 /etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件。缓存文件默认为 /etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表,为了让动态链接库为系统所共享,需运行动态链接库的管理命令ldconfig,此执行程序存放在/sbin目录下。

ldconfig通常在系统启动时运行,而当用户安装了一个新的动态链接库时,就需要手工运行这个命令。
docs文件夹下生成文档

make html
# 报错:大概是因为缺少sphinx文档的主题
ImportError: No module named sphinx_bootstrap_theme# 安装sphinx_bootstrap_theme解决
pip install sphinx_bootstrap_theme

使用方法

适用于 服务端/客户端

-f 指定数据显示格式 [k|m|K|M] 分别表示 Kbits、Mbits、KBytes、MBytes,默认是 Mbits
-l 设置读写缓冲区的长度。TCP方式默认为8KB,UDP方式默认为1470字节。
-u 使用 udp 协议
-i 以秒为单位统计带宽值
-b,--bandwidth [K|M|G]:指定UDP模式使用的带宽,单位bits/sec,默认值是1 Mbit/sec
-m 显示最大的 TCP 数据段大小
-p 指定服务端或者客户端的端口号
-w 指定 TCP 窗口大小
-t,--time:指定数据传输的总时间,即在指定的时间内,重复发送指定长度的数据包。默认10秒
-A:CPU亲和性,可以将具体的iperf3进程绑定对应编号的逻辑CPU,避免iperf进程在不同的CPU间调度
-B 绑定道指定的主机地址或接口
-C 兼容旧版本
-M 设置 TCP 数据包的最大 MTU 值-V, --verbose: 更多细节输出

优化方法:

-P, –parallel:线程数。指定客户端与服务端之间使用的线程数。默认是1线程。需要客户端与服务器端同时使用此参数。

iperf原理

服务端在压力测试前服务端和客户端先使用udp协商压测使用的协议(tcp/udp)等测试参数,所以服务端不用制定压测协议,直接运行iperf3 -s -p 10081即可。

测试

UDP服务端客户端端使用如下命令:

# 服务端
./iperf3 -s -p 10081# 客户端
./iperf3 -c 192.168.22.123 -u -p 10081 -t 60 -f m -b50000M

[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams
[  5]   0.00-60.00  sec  16.2 GBytes  2321 Mbits/sec  0.000 ms  0/12453417 (0%)  sender
[  5]   0.00-60.01  sec  1.73 GBytes   248 Mbits/sec  0.043 ms  11119569/12448888 (89%)  receiver
  • Transfer:传输字节数
  • Bitrate:上下行带宽
  • Jitter:时延抖动(时延参数)。
    计算方法:假设数据包i客户端发送时间为Si,服务端接收时间为Ri。数据包i和j的抖动
    D(i, j)=(Rj - Sj) - (Ri - Si)

参考文档

  • iperf 的介绍和使用:http://www.enkichen.com/2017/06/06/iperf-introduce/
  • Linux命令大全:iperf https://ipcmen.com/iperf

性能测试

客户端


iperf3 -c 192.168.22.100 -p 1001 -t 30 -f m -b 10240m -p 128

测试参数:

  • -c 为客户端运行并要指定服务端的IP地址

  • -b 表示使用的测试带宽

  • -t 表示以时间为测试结束条件进行测试,默认为 10 秒;

  • -d 打印出更详细的debug调试信息

  • -P到iperf3服务器端并行的连接数量,默认值是1。

说明:(在日常测试中,我们会发现当最大吞吐量上不去的时候,开多个并行连接一般会立竿见影的提升最大吞吐量,通常我人们的第一反应是iperf开启了多线程(详见:Linux下如何查看多线程进程里的线程信息),但事实上在开启多个并行连接的情况下iperf不论是客户端还是服务端,依然工作在单线程模式下(详见:iPerf3 -P参数详细图文分析),最大吞吐量主要取决于接收方主机,发送方主机和网络3个节点的,最大带宽,最大包处理能力,延时这三个能力,后面我们可以专门开篇讲讲做最大吞吐量测试3个节点3个能力的影响,以及应该如何正确设置iperf的参数。

使用方式:如下所示:表示开3个连接

iperf3 -c 192.168.3.15 -u -P 3

结果:

  • Interval:程序的运行时间

  • Transfer:传输的数据总量

  • Bandwidth:测试出的带宽

  • Jitter:网路抖动

  • Lost/Total Datagrams:丢包数/总数据包数(丢包率)

在这里插入图片描述

服务端

./iperf3 -s -p 1001

在这里插入图片描述

查看CPU是否打满

htop

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/26852.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GATK ApplyBQSRSpark 过程中因No space left on device终止

Error: GATK ApplyBQSRSpark 过程中因No space left on device终止 执行命令: nohup time ./gatk --java-options "-Xmx128G" ApplyBQSRSpark --spark-master local[20] -R ../../alignment/hg38/hg38.fa -I ../../alignment/bam/P368T.s…

微信小程序nodejs+vue+uniapp高校食堂线上预约点餐系统

本次设计任务是要设计一个食堂线上预约点餐系统,通过这个系统能够满足管理员及学生的食堂线上预约点餐分享功能。系统的主要包括首页、个人中心、学生管理、菜品分类管理、菜品管理、关于我们管理、意见反馈、系统管理、订单管理等功能。 开发语言 node.js 框架&am…

【论文阅读】对抗溯源图主机入侵检测系统的模仿攻击(NDSS-2023)

作者:伊利诺伊大学芝加哥分校-Akul Goyal、Gang Wang、Adam Bates;维克森林大学-Xueyuan Han、 引用:Goyal A, Han X, Wang G, et al. Sometimes, You Aren’t What You Do: Mimicry Attacks against Provenance Graph Host Intrusion Detect…

BenchmarkSQL 支持 TiDB 驱动以及 tidb-loadbalance

作者: GangShen 原文来源: https://tidb.net/blog/3c274180 使用 BenchmarkSQL 对 TiDB 进行 TPC-C 测试 众所周知 TiDB 是一个兼容 MySQL 协议的分布式关系型数据库,用户可以使用 MySQL 的驱动以及连接方式连接 TiDB 进行使用&#xff0…

Git从远程仓库中删除文件,并上传新文件

目录 删除: 拉取远程分支的更新: ​编辑 首先查看git状态: ​编辑 删除文件并提交版本库: 提交: 上传新文件: 首先查看git状态: 提交到暂存区: 提交到版本库: 上…

基于Spring Boot的在线视频教育培训网站设计与实现(Java+spring boot+MySQL)

获取源码或者论文请私信博主 演示视频: 基于Spring Boot的在线视频教育培训网站设计与实现(Javaspring bootMySQL) 使用技术: 前端:html css javascript jQuery ajax thymeleaf 微信小程序 后端:Java sp…

skywalking日志收集

文章目录 一、介绍二、添加依赖三、修改日志配置1. 添加链路表示traceId2. 添加链路上下文3. 异步日志 四、收集链路日志 一、介绍 在上一篇文章skywalking全链路追踪中我们介绍了在微服务项目中使用skywalking进行服务调用链路的追踪。 本文在全链路追踪的基础上&#xff0c…

gradle项目Connection timed out,build时先下载gradle问题download gradle-x.x-bin.zip

IDEA 导入 Gradle 项目,编译的时候会默认下载 配置版本的Gradle.zip问题,一般会下载失败,提示Connection timed out,连接超时。 解决办法: 修改项目根目录下gradle目录下的gradle-wrapper.properties文件,…

LLM as Co-pilot:AutoDev 1.0 发布,开源全流程 AI 辅助编程

四月,在那篇《AutoDev:AI 突破研发效能,探索平台工程新机遇》,我们初步拟定了 AI 对于研发的影响。我们有了几个基本的假设: 中大型企业将至少拥有一个私有化的大语言模型。只有构建端到端工具才能借助 AI 实现增质提效…

STM32入门——定时器

内容为江科大STM32标准库学习记录 TIM简介 TIM(Timer)定时器定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时&…

【Docker】性能测试监控平台搭建:InfluxDB+Grafana+Jmeter+cAdvisor

前言 在做性能测试时,如果有一个性能测试结果实时展示的页面,可以极大的提高我们对系统性能表现的掌握程度,进而提高我们的测试效率。但是我们每次打开Jmeter都会有几个硕大的字提示别用GUI模式进行负载测试,而且它自带的监视器效…

系统架构设计师-软件架构设计(7)

目录 大型网站系统架构演化 一、第一阶段:单体架构 到 第二阶段:垂直架构 二、第三阶段:使用缓存改善网站性能 1、缓存与数据库的数据一致性问题 2、缓存技术对比【MemCache与Redis】 3、Redis分布式存储方案 4、Redis集群切片的常见方式 …

c++ boost circular_buffer

boost库中的 circular_buffer顾名思义是一个循环缓冲器,其 capcity是固定的当容量满了以后,插入一个元素时,会在容器的开头或结尾处删除一个元素。 circular_buffer为了效率考虑,使用了连续内存块保存元素 使用固定内存&#x…

为什么要选择文件传输软件?有哪些最佳高速文件传输软件?

是否经历过这样的场景,正在努力地完成工作任务,但是由于制作的数据无法及时传送给合作伙伴,工作流程被打断了?这听起来很令人沮丧,对吧?可是,这种情况在现实中并不罕见。 因此,需要…

OpenCv.js(图像处理)学习历程

opencv.js官网 4.5.0文档 以下内容整理于opencv.js官网。 简介 OpenCV由Gary Bradski于1999年在英特尔创建。第一次发行是在2000年。OpenCV支持c、Python、Java等多种编程语言,支持Windows、Linux、Os X、Android、iOS等平台。基于CUDA和OpenCL的高速GPU操作接口也…

java泛型和通配符的使用

泛型机制 本质是参数化类型(与方法的形式参数比较,方法是参数化对象)。 优势:将类型检查由运行期提前到编译期。减少了很多错误。 泛型是jdk5.0的新特性。 集合中使用泛型 总结: ① 集合接口或集合类在jdk5.0时都修改为带泛型的结构② 在实例化集合类时…

Unity数字可视化学校_昼夜(三)

1、删除不需要的 UI using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;public class EnvControl : MonoBehaviour {//UIprivate Button btnTime;private Text txtTime; //材质public List<Material> matListnew Li…

docker中的jenkins去配置sonarQube

docker中的jenkins去配置sonarQube 1、拉取sonarQube macdeMacBook-Pro:~ mac$ docker pull sonarqube:8.9.6-community 8.9.6-community: Pulling from library/sonarqube 8572bc8fb8a3: Pull complete 702f1610d53e: Pull complete 8c951e69c28d: Pull complete f95e4f8…

Java课设--学生信息管理系统(例2)

文章目录 前提一、运行效果二、代码获取 前言 首先确定自己的JDBC连接数据库已经完成&#xff0c;不懂可以看看其他博主的解析。 我使用的是SQL Server数据库&#xff0c;数据库名称为stu,账号为sa,密码为123456 数据库的表为student表&#xff0c;内容如下&#xff1a; 一、…

Linux 信号signal处理机制

Signal机制在Linux中是一个非常常用的进程间通信机制&#xff0c;很多人在使用的时候不会考虑该机制是具体如何实现的。signal机制可以被理解成进程的软中断&#xff0c;因此&#xff0c;在实时性方面还是相对比较高的。Linux中signal机制的模型可以采用下图进行描述。 每个进程…