使用mlx5_qos 统计RNR却没有RNR信息
时间: 2023-07-30 15:09:44 浏览: 171
如果使用`mlnx_qos -i <网卡名称> -s`命令查看网卡的QoS配置和统计信息,却没有RNR信息,可能有以下几种原因:
1. 网卡没有收到RNR消息:RNR是一种流控机制,只有当接收方缓冲区已满无法接收数据时,才会发送RNR消息。如果接收方缓冲区一直有空闲空间,就不会发送RNR消息。因此,如果没有出现接收方缓冲区溢出的情况,就可能没有RNR信息。
2. 网卡的RNR统计功能没有打开:尽管RNR功能默认是开启的,但是统计RNR计数的功能可能没有打开。可以通过以下命令打开RNR计数统计功能:
```
mlnx_qos -i <网卡名称> -c rnr_enable=1
```
其中,<网卡名称>为需要配置的网卡的名称,`rnr_enable=1`表示打开RNR计数统计功能。配置完成后,再使用`mlnx_qos -i <网卡名称> -s`命令查看QoS配置和统计信息,就应该能够看到RNR计数了。
3. 网卡驱动版本过低:RNR功能是通过网卡驱动实现的,如果驱动版本过低可能不支持RNR功能或者统计RNR计数。可以尝试升级网卡驱动到最新版本,再重新查看RNR统计信息。
需要注意的是,以上方法可能会因系统环境、驱动版本等因素而有所不同。如果无法解决问题,可以参考Mellanox官方文档或者联系技术支持。
相关问题
mlx5网卡怎么开启RNR功能,并如何统计RNR
RNR(Receiver Not Ready)是一种流量控制技术,可以避免接收端处理不过来的情况。在mlx5网卡上开启RNR功能可以通过设置QoS(Quality of Service)参数来实现。具体步骤如下:
1. 使用Mellanox官方提供的MLNX_OFED驱动,或者安装MLNX_OFED的包,确保mlx5_core模块已经加载。
2. 使用ethtool命令查看网卡是否支持QoS功能:
```
ethtool -l <interface name>
```
如果结果中有“rx-flow-hash”一项,则网卡支持QoS功能。
3. 使用ethtool命令开启QoS功能:
```
ethtool -L <interface name> combined <number of RX queues>
```
例如,如果想要开启4个RX队列,则可以执行以下命令:
```
ethtool -L eth0 combined 4
```
4. 在应用程序中,可以使用Perf Query工具来统计RNR。Perf Query是一种性能分析工具,可以使用以下命令来统计RNR:
```
sudo perf query -i <interface name> -e mlx5e:rq_affinity_change --per-thread
```
例如,如果要统计eth0网卡的RNR,可以执行以下命令:
```
sudo perf query -i eth0 -e mlx5e:rq_affinity_change --per-thread
```
运行结果会输出每个线程的RNR统计信息。
mlx5网卡如何打开RNR计数统计功能
mlx5网卡的RNR计数统计功能默认是开启的,可以通过`ethtool`命令查看网卡的统计信息,包括RNR计数。
使用以下命令查看网卡的统计信息:
```
ethtool -S <网卡名称>
```
其中,<网卡名称>为需要查询的网卡的名称,可以使用`ifconfig`或者`ip addr`命令查看。
例如,查看名为`enp216s0f0`的网卡的统计信息,可以使用以下命令:
```
ethtool -S enp216s0f0
```
输出信息中,RNR计数对应的字段为`rxf_rnr_packets`。
需要注意的是,`ethtool`命令需要在root权限下执行,如果没有root权限需要使用sudo命令。另外,该命令只能统计RNR的计数,不能提供更详细的RNR分析信息。如果需要更深入的RNR分析,可以使用其他工具,如Perf Query或ibdump。
阅读全文