使用iperf3测试网卡bond性能

问题

当 Linux 系统中的两个网卡配置为 Bonding 模式 4(即 802.3 ad 动态链路聚合模式),目的是为了实现网络流量在多个物理链路上的负载均衡和故障转移,从而理论上可以达到或接近两个网卡带宽之和。为了使用 iperf3 测试这种配置下的最大网速是否能达到 20,000 Mbps,你可以采取以下步骤进行多线程的测试。

一般步骤

  1. 确保 Bonding 配置正确:首先确认你的 Bonding 配置已经正确设置,并且两个网卡都处于活动状态。你可以通过 cat /proc/net/bonding/bond0(如 bond 名称为 bond0)来查看其状态。

  2. 安装 iperf3:确保在服务器端和客户端都安装了 iperf3。在大多数 Linux 发行版中,可以通过包管理器(如 apt、yum 或 dnf)来安装。

  3. 启动 iperf 3 服务器:在充当服务器的机器上,打开一个终端,运行以下命令来启动 iperf 3 作为服务器,侦听默认端口 5201:

    iperf3 -s
    
  4. 多线程测试参数:为了最大化利用聚合链路的带宽,你可以在客户端使用 -P 参数来指定多个并发线程。理论上,为了达到 20,000 Mbps,你需要根据实际带宽和希望的测试强度来决定线程数。如果单个网卡理论最大带宽是 10 Gbps(即 10000 Mbps),那么两个网卡理论上可达到 20 Gbps。为了尽量测试出这个极限,可以尝试使用较高的线程数,但需注意不要超出系统或网络的实际处理能力。

    例如,如果你希望使用 10 个线程进行测试,可以在客户端运行:

    iperf3 -c <服务器IP> -P 10
    

    其中 <服务器IP> 需要替换为服务器的实际 IP 地址。

  5. 分析结果:执行测试后,iperf 3 会显示每个线程以及总体的带宽结果。注意观察总的双向传输速率是否接近或达到了预期的 20,000 Mbps。如果未达到,可能是因为网络配置、硬件限制、其他网络瓶颈或者 iperf3 本身的限制。

  6. 调整与重试:如果初始测试未能达到预期,可能需要调整线程数、测试时间或其他 iperf 3 参数,比如使用 -w 参数来增加 TCP 窗口大小,或者检查网络设备是否有足够的缓冲区设置等。

注意,实际测试结果可能会受到多种因素影响,包括但不限于网络配置、硬件性能、操作系统设置、以及其他网络流量。因此,达到理论上的最大值可能需要细致的调整和优化。

在 iperf 3 中,-w 参数用于设置 TCP 窗口大小(对于 UDP 则是接收和发送缓冲区的大小)。默认情况下,TCP 窗口大小通常由操作系统自动设置,并且根据网络状况和 MTU(最大传输单元)等因素动态调整。但是,有时手动设置窗口大小可以帮助提高特定条件下的吞吐量,尤其是在进行高带宽、低延迟网络的测试时。

-w 参数配置示例:

假设你想手动设置 TCP 窗口大小为 1 MB,可以这样使用 -w 参数:

iperf3 -c <服务器IP> -w 1048576

这里的 1M 表示 1 兆字节(即 1024 KB)。你可以根据需要调整这个值,但要注意不要设置得过大,以免导致网络拥塞或资源耗尽。

-P 参数配置示例:

-P 参数用于指定并行线程的数量,这对于测试聚合链路(如你提到的 Bond mode 4)的总吞吐量非常有用。如果要使用 4 个线程进行测试,命令如下:

iperf3 -c <服务器IP> -P 4

结合使用 -w-P 参数:

为了同时设置窗口大小和使用多线程,可以这样组合使用这两个参数:

iperf3 -c <服务器IP> -P 4 -w 1048576

这将启动 4 个线程,并且为每个线程设置 1 MB 的 TCP 窗口大小。

注意事项:

  • 实际设置时,应当根据你的网络环境和硬件能力逐步调整这些参数。过大的窗口大小或过多的线程可能会导致网络拥塞、CPU 负载过高或其他性能问题。
  • 测试时,建议先从较小的窗口大小和线程数开始,然后逐渐增加,观察网络性能的变化。
  • 在某些操作系统中,可能需要管理员权限(使用 sudo)来设置大于默认值的窗口大小。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一篇文章拿下 Redis缓存穿透,缓存击穿,缓存雪崩

文章目录 ☃️缓存击穿❄️❄️解决方案一、使用锁❄️❄️解决方案二、逻辑过期方案❄️❄️解决方案三、永不过期 主动更新❄️❄️解决方案四、接口限流❄️❄️实战❄️❄️❄️利用互斥锁解决缓存击穿问题❄️❄️❄️利用逻辑过期解决缓存击穿问题 ☃️缓存穿透❄️❄️缓…

【python】将json内解码失败的中文修改为英文(‘utf-8‘ codec can‘t decode,labelme标注时文件名未中文)

出现问题的场景&#xff1a; 语义分割数据集&#xff0c;使用labelme工具进行标注&#xff0c;然后标注图片存在中文名&#xff0c;导致json标签文件写入中文图片名&#xff0c;从而解析失败。 代码解析json文件时&#xff0c;出现报错&#xff1a; python脚本需求&#x…

org.postgresql.util.PSQLException: 错误: 关系 “dual“ 不存在

springboot 项目连接 postgreps&#xff0c;启动时报错 org.postgresql.util.PSQLException: 错误: 关系 "dual" 不存在。 查阅资料后发现这是由配置文件中的配置 datasource-dynamic-druid-validationQuery 导致的 spring:datasource:druid:stat-view-servlet:ena…

SDL系列(四)—— 事件机制

事件循环 大多数多媒体程序依靠 事件系统 来处理输入。 SDL 为处理输入事件提供了灵活的 API 。 本质上&#xff0c; SDL 将来自设备&#xff08;如键盘&#xff0c;鼠标或控制器&#xff09;的输入记录为 事件 &#xff0c;将它们存储在 “ 事件队列 ”中。 您可以将此…

使用Xterm实现终端构建

————html篇———— // 需要使用Xterm Xterm的官网&#xff1a; Xterm.js 新建项目 增加基本文件 下载 框架 npm init -y Xterm依赖 npm install xterm/xterm 参考文档写的代码 贴入代码 <html><head><link rel"stylesheet" href"nod…

【prometheus】prometheus基于consul服务发现实现监控

目录 一、consul服务发现简介 1.1 consul简介 二、prometheus配置 2.1 node-exporter服务注册到consul 2.2 修改prometheus配置文件 【Prometheus】概念和工作原理介绍_prometheus工作原理-CSDN博客 【Prometheus】k8s集群部署node-exporter 【prometheus】k8s集群部署p…

企业微信hook接口协议,ipad协议http,大文件网络上传

大文件网络上传 参数名必选类型说明url是String网络图片地址 请求示例 {"uuid":"2b0863724106a1160212bd1ccf025295","authkey":"0AAxxx031", "filekey":"346b7bff-08d5-4ac2-bc67-fd10e3eb2388", "fileur…

六西格玛绿带培训:解锁质量工程师的职场新篇章

在质量管理这条道路上&#xff0c;我们或许都曾有过这样的疑问&#xff1a;为何付出了同样的努力&#xff0c;却未能获得预期的回报&#xff1f;当我们看到身边的同行们逐渐步入高薪的行列&#xff0c;而自己却似乎陷入了职业的泥沼&#xff0c;这种对比无疑令人倍感焦虑。然而…

win10安装docker

控制面板-> 程序和功能 最好是是管理员进入cmd PS C:\Windows\system32> wsl --status PS C:\Windows\system32> wsl --install -d Ubuntu 正在安装: 适用于 Linux 的 Windows 子系统 已安装 适用于 Linux 的 Windows 子系统。 正在安装: Ubuntu 已安装 Ubuntu。 请…

银行风险系统的全面解析:功能作用与系统间的互联互通

银行风险管理系统是银行为控制风险而建立的一套重要系统&#xff0c;主要用于评估、监测和控制银行面临的各种风险&#xff0c;包括信用风险、市场风险、操作风险等。 一、主要功能 风险识别&#xff1a;系统首先识别在业务开展中可能会面临的各种风险。这通常涉及对客户信息、…

Kotlin核心编程知识点-02-面向对象

文章目录 1.类和构造方法1.1.Kotlin 中的类及接口1.1.1.Kotlin 中的类1.1.2.可带有属性和默认方法的接口 1.2.更简洁地构造类的对象1.2.1.构造方法默认参数1.2.2.init 语句块1.2.3.延迟初始化&#xff1a;by lazy 和 lateinit 1.3.主从构造方法 2.不同的访问控制原则2.1.限制修…

【虚拟仿真】Unity3D中实现对大疆无人机遥控器手柄按键响应

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址QQ群:398291828大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 最近项目中需要用到大疆无人机遥控器对程序中无人机进行控制,遥控器是下图这一款: 博主发…

【案例】根据商品的颜色进行分组,同一种颜色的商品可以对应多种尺寸、价格以及库存

效果展示 效果说明 输入商品的颜色、尺寸后点击添加按钮&#xff0c;即可将对应的商品信息添加到下方的表格当中&#xff0c;表格中除了会显示商品的颜色和尺寸之外&#xff0c;还会显示商品的价格和库存&#xff0c;并且可以对商品的价格和库存进行修改&#xff0c;并且根据颜…

实现mysql的主从复制、实现MySQL的读写分离与负载均衡

实验环境 &#xff08;注明&#xff09;以下的所有关于yum和rpm以及tar的软件需要自己准备&#xff0c;没有的话可以私信博主 实验目标&#xff1a; 1.实现mysql主从复制 2.实现mysql读写分离与负载均衡 实验一、搭建mysql主从复制 1.建立时间同步环境&#xff0c;在主节…

圆上点云随机生成(人工制作模拟数据)

1、背景介绍 实际上,很多地物外表形状满足一定的几何形状结构,如圆形是作为常见一类。那么获取该类目标的点云数据便是位于一个圆上的点云数据。如下图所示为两簇典型的点云,其中一种为理想型,点均位于一个圆上,另外一簇则是近似位于一个圆上,这种更加符合真实情况。有时…

Skywalking 介绍及应用(从0到1)完整版

微服务全链路追踪 一、APM 系统 APM 系统是可以帮助理解系统行为、用于分析性能问题的工具以便发生故障的时候&#xff0c;能够快速走位和解决问题。 告警规则 SkyWalking 的发行版都会默认提供config/alarm-settings.yml文件&#xff0c;里面预先定义了一些常用的告警规则。…

动手学深度学习20 卷积层里的填充和步幅

动手学深度学习20 卷积层里的填充和步幅 1. 填充和步幅2. 代码实现3. QA4. 练习 课本&#xff1a; https://zh-v2.d2l.ai/chapter_convolutional-neural-networks/padding-and-strides.html 1. 填充和步幅 卷积网络可调的超参数。 当输入shape一定&#xff0c;卷积核shape一定&…

springcloud+nocos从零开始

首先是去nacos官网下载最新的包&#xff1a;Nacos 快速开始 | Nacos win下启动命令&#xff1a;startup.cmd -m standalone 这样就可以访问你的nacos 了。 添加一个配置&#xff0c;记住你的 DataId,和Group名字。 创建一个pom项目&#xff0c;引入springCloud <?xml ve…

windows快速计算文件的SHA256数值的步骤

在文件路径打开cmd窗口 输入命令 用Windows自带的certutil命令来计算一个文件的校验值1&#xff1a; certutil支持的算法有&#xff1a;MD2 MD4 MD5 SHA1 SHA256 SHA384 SHA512。 certutil的使用方法非常简单&#xff0c;只需要执行“certutil -hashfile 文件名 校验值类型”…

SpringAI应用开发

一、人工智能简述 四次工业革命推动了人类社会发展和变革&#xff1a; 蒸汽时代&#xff0c;发生在18世纪60年代~19世纪中期&#xff08;大约是1760年到1860年&#xff09;&#xff0c;这一时期的特点是机械化生产和大规模生产。电气时代&#xff0c;发生在19世纪下半叶~20世纪…