【NI USRP】如何使用USRP RIO的10Gb SFP+以太网端口? 本文写了这方面的一些例子

问题:如何使用USRP RIO的10Gb SFP+以太网端口? 有这方面的例子吗?

环境不同,使用方法不同

LabVIEW 或者 LabVIEW NXG

NI 提供了一个名为NI-USRP RIO 10Gb Ethernet的案例。您可以通过以下方式找到它project >> NI-USRP >> NI-USRP RIO 10Gb Ethernet

从 NI-USRP 驱动程序版本 19.5 开始,“NI-USRP RIO 10Gb 以太网”项目已原生添加到 LabVIEW 中。 该项目演示了如何将数据从 USRP FPGA 目标传输至 USRP FPGA 目标。 该项目仍然需要始终与主机建立 MXI 连接,以建立连接、监控接收和发送到 USRP 的数据以及向 FPGA 写入指令。 该项目无法在脱离 MXI 链路的情况下使用,如果您需要修改 FPGA 并仅使用 10Gb 以太网连接,请参阅上面链接的 USRP 开源开发环境。

开源环境

适用的硬件:

  • USRP X310
  • USRP X300
  • USRP N310
  • USRP N320
  • USRP N321
  • USRP-2974

适用的系统:

  • Ubuntu 18.04
  • UHD driver 3.15.0.0

FPGA 镜像需求

  • HG bit文件: Port 0 必须是 1 GbE, 而且 Port 1 必须是 10 GbE.
  • XG bit文件: Port 0 和 Port 1 必须都是 10 GbE.

计算机需求

CPU需求

I7-10代以上,主频3G以上

内存需求

32G以上

主板PCIe

至少 PCIe 3.0 以上;

万兆网卡

Intel 千兆网卡,可以从东枫科技采购;

万兆馈线

3米左右,可以从东枫科技采购;

软件操作

确保您的 CPU 调节器设置为性能。 这可以使用 Linux 实用程序 cpufrequtils 来完成。

使用以下命令安装 cpufrequtils:

 sudo apt install cpufrequtils

然后,您可以通过发出以下命令将 CPU 调控器设置为每个核心的性能:

sudo cpufreq-set -c $core_number -g performance

要将 CPU 调速器设置为所有内核的性能:

 for ((i=0;i<$(nproc --all);i++)); do sudo cpufreq-set -c $i -r -g performance; done

然后,您可以通过运行以下命令来验证 CPU 调控器是否已设置:

 cpufreq-info
线程优先级调度

当 UHD 生成新线程时,它可能会尝试提高线程的调度优先级。 如果设置新优先级失败,UHD 软件会向控制台打印一条警告,如下所示。 此警告是无害的; 它只是意味着线程将保留正常或默认的调度优先级。

UHD Warning:
    Unable to set the thread priority. Performance may be negatively affected.
    Please see the general application notes in the manual for instructions.
    EnvironmentError: OSError: error in pthread_setschedparam

为了解决这个问题,需要向非特权(非root)用户授予特殊权限来更改调度优先级。 可以通过创建一个 usrp 组,将您的用户添加到其中,然后将 @usrp - rtprio 99 行附加到文件 /etc/security/limits.conf 来启用此功能。

 sudo groupadd usrp
 sudo usermod -aG usrp $USER

然后将以下行添加到文件 /etc/security/limits.conf 的末尾:

 @usrp - rtprio  99

您必须注销并重新登录帐户才能使设置生效。 在大多数 Linux 发行版中,可以在 /etc/group 文件中找到组和组成员的列表。

以下链接的用户手册中有有关此内容的更多文档。

调整网络缓冲区

这适用于通过以太网连接的 USRP 设备,例如 N200、N210、N300、N310、N320、N321、X300、X310、E320。

请注意,这些设置在重新启动后不会保留。

   sudo sysctl -w net.core.wmem_max=33554432
   sudo sysctl -w net.core.rmem_max=33554432
   sudo sysctl -w net.core.wmem_default=33554432
   sudo sysctl -w net.core.rmem_default=33554432
调整以太网MTU

这适用于以太网连接的 USRP(N2xx、N3xx、X3xx、E320)。

对于 1 Gigabit 连接,MTU 应设置为 1500。

对于 10 Gigabit 连接,MTU 应设置为 9000。

设置该值并且不要使其自动设置很重要

增加环形缓冲区

这适用于使用 10 Gb 接口(X3xx、N3xx、E320)连接以太网的 USRP。

增加 NIC 上的环形缓冲区可能有助于防止较高速率下的流量控制错误。

 sudo ethtool -G <interface> tx 4096 rx 4096
DPDK

N3xx、X3xx 和 E320 USRP 支持 DPDK。 DPDK 使用基于用户态的低开销驱动程序取代了传统的 Linux 网络堆栈。 有关使用 DPDK 的更多详细信息,请参阅位于以下链接的 UHD 手册:https://files.ettus.com/manual/page_dpdk.html

禁用超线程

在某些需要每个核心尽可能高的 CPU 性能的应用程序中,禁用超线程可以使核心性能提高大约 10%,但代价是核心线程较少。 超线程可以在 BIO 内禁用,并且因制造商而异。

禁用 Spectre/Meltdown 的 KPTI 保护

在某些情况下,禁用 Linux 内核的 KPTI 保护可以将性能提高 10-15%。 重要的是要注意进行此修改可能产生的后果。 仅建议对绝对需要最佳性能且未连接到互联网的系统进行此修改。

  • https://en.wikipedia.org/wiki/Meltdown_(security_vulnerability)
  • https://en.wikipedia.org/wiki/Spectre_(security_vulnerability)

可以通过将以下行添加到 /etc/default/grub 文件的 GRUB_CMDLINE_LINUX_DEFAULT=“” 来禁用 KPTI 保护

pti=off spectre_v2=off l1tf=off nospec_store_bypass_disable no_stf_barrier

修改 grub 文件后,运行以下命令来更新配置并重新启动:

sudo update-grub

参考文献

1、 How to Use NI USRP RIO 10Gb SFP+ Ethernet Port:https://knowledge.ni.com/KnowledgeArticleDetails?id=kA03q000000x54fCAA&l=zh-CN
2、https://knowledge.ni.com/KnowledgeArticleDetails?id=kA03q000000wxj6CAA&l=zh-CN
3、https://kb.ettus.com/USRP_Host_Performance_Tuning_Tips_and_Tricks

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东枫科技

打赏即可咨询本帖子的技术问题

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值