一、背景

iperf3 是一款开源网络性能测试工具,用于测量网络带宽、延迟、抖动、丢包率等指标。它是 iperf 工具的第三代版本,专注于网络吞吐量和稳定性的测试与分析。

可用于千兆甚至万兆以太网口的传输测试。

二、linux板卡上iperf3移植

2.1 源码下载

下载链接:https://downloads.es.net/pub/iperf/

本文以3.0.3版本为例:

2.2 解压

在ubuntu本地创建一个目录,将源码解压至该目录,例如:

mkdir ~/iperf  #创建存储目录
cp iperf-3.0.3.tar.gz ~/iperf #将源码copy至存储目录
cd ~/iperf #进入目录
ar xzf iperf-3.0.3.tar.gz #解压
cd iperf-3.0.3/ #进入目录

2.3 配置交叉编译链

需要配置使用目标板用的交叉编译工具对源码进行编译,这里我的目标板卡的交叉编译工具为arm-linux-gnueabihf

交叉编译工具链一定要选择正确,否则无法在目标板卡上运行,不知道的可以参考驱动编译的编译工具

mkdir ../install   #新建安装目录,编译成功后的bin 和lib都将保存在这里
./configure --host=arm-none-linux-gnueabihf --prefix=/home/stairmed/iperf/install #设置存储路径

其中,

  • –host: 指定交叉编译工具,一般为arm-none-linux-gnueabi、arm-linux-gnueabihf、arm-linux等,具体要和目标板用的交叉编译工具对应。

  • –prefix: 指定安装目录,编译后的文件会全部放在安装目录中。必须是绝对路径!

2.4 编译

$ make                  # 编译,如果是多核CPU,如四核,使用make -j4可提高编译速度
$ make install # 安装

完成后,文件会自动安装到上面指定的 install 目录。

2.5 打包

tar jcf iperf-3.0.3.tar.bz2 bin lib                  # 压缩bin和lib目录

2.6 复制至目标板卡的根文件系统

将打包后的 iperf-3.0.3.tar.bz2 压缩包通过U盘、FTP或者NFS等方式拷贝到目标板,并分别解压到/bin和/sbin目录。可以选择:

  1. 直接将该压缩文件解压至本地的 rootfs镜像usr/bin和usr/lib目录,然后将rootfs替换TF卡的EXT4分区

  2. 将压缩文件copy至fat分区,进入系统后再解压至usr/bin和usr/lib目录

$ tar jxf iperf-3.0.3.tar.bz2 bin -C /usr   # 解压镜像到/usr/bin
$ tar jxf iperf-3.0.3.tar.bz2 lib -C /usr # 解压库文件到/usr/lib

注意:不要直接将压缩包解压缩至fat32分区,然后copy至对应目录,否则有可能会出现以下错误信息:

iperf3: error while loading shared libraries: libiperf.so.0: cannot open shared object file: No such file or directory

三、ubuntu本地下载

直接使用apt工具下载:

sudo apt-get install iperf3

一定得是iperf3,与板卡version一致

四、使用

板卡和主机设置在同一个网段。例如板卡:192.168.52.10,主机:192.168.52.11.

4.1 在ubuntu启动服务器iperf

iperf3 -s -i 1

参数说明:

  • -s:以服务器方式启动

  • -i:以秒为单位显示报告间隔

  • -w:指定TCP窗口大小,默认是8KB

4.2 在板卡启动客户端

 $ iperf3 -c 192.168.52.11 -i 1 -w 448k -t 10

参数说明:

  • -c:以client模式启动,随后跟着服务器的IP地址

  • -t:测试时间,默认10秒

4.3 测试结果

客户端:

可以看到在我的板卡上,带宽可以跑到近800Mbps。

移植并使用Iperf3测试ARM Linux网口带宽的更多相关文章

  1. 移植ARM linux下远程连接工具dropbear

    移植ARM linux下远程连接工具dropbear 原文地址:http://www.cnblogs.com/NickQ/p/9010529.html 移植zlib 下载地址:https://gith ...

  2. Linux 安装 go 以及 arm linux 移植 go

    背景 Go是一门全新的静态类型开发语言,具有自动垃圾回收,丰富的内置类型,函数多返回值,错误处理,匿名函数,并发编程,反射等特性. 从Go1.4之后Go语言的编译器完全由Go语言编写,所以为了从源代码 ...

  3. arm linux 移植 x265

    背景 本来想着把 x265编译到ffmpeg里面,搞定了x265的编译:但是一直报ERROR: x265 not found using pkg-config这个错误,我按照网上的资料,查看了ffbu ...

  4. 009-2010网络最热的 嵌入式学习|ARM|Linux|wince|ucos|经典资料与实例分析

    前段时间做了一个关于ARM9 2440资料的汇总帖,很高兴看到21ic和CSDN等论坛朋友们的支持和鼓励.当年学单片机的时候datasheet和学习资料基本都是在论坛上找到的,也遇到很多好心的高手朋友 ...

  5. 【Qt开发】【VS开发】【Linux开发】OpenCV、Qt-MinGw、Qt-msvc、VS2010、VS2015、Ubuntu Linux、ARM Linux中几个特别容易混淆的内容

    [Qt开发][VS开发][Linux开发]OpenCV.Qt-MinGw.Qt-msvc.VS2010.VS2015.Ubuntu Linux.ARM Linux中几个特别容易混淆的内容 标签:[Qt ...

  6. ARM Linux Qt 5.x.x 无标题栏

    /********************************************************************************* * ARM Linux Qt 5. ...

  7. 构建 ARM Linux 4.7.3 嵌入式开发环境 —— U-BOOT 引导 Kernel

    经过若干天的反复测试,搜索.终于成功利用 Qemu 在 u-boot 下引导 ARM Linux 4.7.3 内核.如下详细解释整个构建过程. 准备环境 运行环境:Ubuntu 16.04 需要的虚拟 ...

  8. ARM Linux启动代码分析

    前言 在学习.分析之前首先要弄明白一个问题:为什么要分析启动代码? 因为启动代码绝大部分都是用汇编语言写的,对于没学过或者不熟悉汇编语言的同学确实有一定难度,但是如果你想真正深入地学习Linux,那么 ...

  9. ARM Linux从Bootloader、kernel到filesystem启动流程

    转自:http://www.veryarm.com/1491.html ARM Linux启动流程大致为:bootloader ---->kernel---->root filesyste ...

  10. Ubuntu12.4 64位 安装 arm linux gcc 4.3.2

    一.下载arm linux gcc 4.3.2 http://pan.baidu.com/share/link?shareid=1575352696&uk=2754759285&fid ...

随机推荐

  1. 【一步步开发AI运动APP】八、自定义姿态动作识别检测——之姿态相似度比较

    之前我们为您分享了[一步步开发AI运动小程序]开发系列博文,通过该系列博文,很多开发者开发出了很多精美的AI健身.线上运动赛事.AI学生体测.美体.康复锻炼等应用场景的AI运动小程序:为了帮助开发者继 ...

  2. 零基础搭建AI作曲工具:基于Magenta/TensorFlow的交互式音乐生成系统

    引言:当AI遇见莫扎特 "音乐是流动的建筑",当人工智能开始理解音符间的数学规律,音乐创作正经历着前所未有的范式变革.本文将手把手教你构建一套智能作曲系统,不仅能够生成古典钢琴小品 ...

  3. Java--Calendar类,Date类的简单使用,日期的格式化

    package demo; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; / ...

  4. GitLab整体迁移到其他服务器的方法与步骤

    将 GitLab 整体迁移到其他服务器上,可以分为以下几个主要步骤,以确保数据和配置的完整性: 1. 备份当前 GitLab 实例 在原服务器上,执行 GitLab 自带的备份命令,以备份所有数据(如 ...

  5. openstack-Train部署文档

    部署参考资料:1,环境准备https://blog.csdn.net/m0_61777116/article/details/123702147阿里yum源https://blog.csdn.net/ ...

  6. 代码重构(OOP)-小栗子(PyQt5)

    主要是为了练习下 面向对象, 不断提醒自己代码一定要写成 营销风格, 和优雅. 最近在B站上看一下关于 Python GUI 编程的内容. 恰好呢, 前不久的一个 将本地 Ecxcel 数据 发布到 ...

  7. Django踩坑之在Django中创建项目时ImportError: No module named django.core

    不使用django-admin.py,而是使用django-admin.exe 具体操作如下 django-admin.exe startproject learning_log . ok,没有提示错 ...

  8. 一个基于 C# 编写的事件驱动、具备专业水准的算法交易平台(量化交易引擎)

    前言 今天大姚给大家分享一个基于 C# 编写的事件驱动.采用模块化设计.具备专业水准的算法交易平台(量化交易引擎):Lean. 项目介绍 Lean 是由 QuantConnect 提供的一个基于 C# ...

  9. SpringSecurity配置 2

    SpringSecurity配置 2 目前的现状,虽然是有了登录认证的接口,但是登录完成后,当我们访问受保护的接口时,即使将 Token 令牌携带与请求一起发送,依然是无法请求成功.另外,提示信息如下 ...

  10. Spring @Controller、@Component和@Autowired等几个最常见的注解

    在如今Spring Boot和Spring Cloud风生水起,Spring注解开发已成为主流开发模式,本篇将介绍常用的组件注册方式.我们所说的组件注册其实就是Spring 把合适的java类全部注册 ...