讲师中心 微信公众号
AI工具推荐 视频效率加速

ethtool -S 显示 rx_no_buffer_count 持续增加的 rx ring buffer 增大经验

星萱小哥_1799

星萱小哥_1799

发布时间:2026-02-05 12:06:10

|

530人浏览过

|

来源于php中文网

原创

rx_no_buffer_count 是网卡驱动因 rx ring buffer 无空闲描述符而丢弃接收包的计数,增长表明内核/驱动层软丢包,主因是 ring 深度不足、中断处理延迟或 NAPI 轮询跟不上流量。

ethtool -s 显示 rx_no_buffer_count 持续增加的 rx ring buffer 增大经验

rx_no_buffer_count 是什么,为什么它增长说明丢包

rx_no_buffer_count 是网卡驱动在接收数据包时,发现 rx ring buffer 中没有空闲描述符(即没有可用的 skb 或 page 缓冲区)而被迫丢弃的数据包计数。它不等于「物理线缆丢包」,而是内核/驱动层因资源不足导致的软丢包。

这个值持续上涨,基本意味着当前 rx ring 深度不够、中断处理不及时、或 NAPI 轮询跟不上流量节奏。常见于高吞吐(如 10G+)、小包(64B)、或 CPU 调度受限(比如绑核不当、软中断集中在一个 CPU)场景。

如何确认 rx ring 当前大小并安全调大

用 ethtool -g 查看和设置 ring buffer 大小。注意:不是所有驱动都支持动态调整,且最大值受硬件和驱动限制(例如 ixgbe 支持最大 4096,igb 通常上限 2048)。

  • 先查当前配置:ethtool -g eth0
  • 尝试增大(以 ixgbe 卡为例):ethtool -G eth0 rx 4096(需 root 权限)
  • 增大后务必验证:ethtool -g eth0 看是否生效;再观察 ethtool -S eth0 | grep rx_no_buffer_count 是否停止上涨
  • 某些驱动(如 vmxnet3)不支持 ethtool -G,只能通过模块参数(如 ring_size=4096)或 guest 内核启动参数调整

光调大 rx ring 不够:还要配好中断与 NAPI 行为

ring buffer 只是第一环。如果软中断(softirq)处理不过来,即使 buffer 很大,也会反复填满又来不及消费,最终仍触发 rx_no_buffer_count 增长。

  • 检查软中断分布:cat /proc/softirqs | grep -i net_rx,确认是否集中在单个 CPU
  • 启用 RPS(Receive Packet Steering)可将软中断分发到多核:echo f > /sys/class/net/eth0/queues/rx-0/rps_cpus(十六进制掩码)
  • 调大 net.core.netdev_budget(默认 300),让每次 NAPI poll 处理更多包,减少轮询次数开销:sysctl -w net.core.netdev_budget=600
  • 若使用 Intel 多队列网卡,确保 ethtool -l eth0 显示的 combined 队列数 ≥ CPU 核数,并配合 irqbalance 或手动绑 IRQ 到不同 CPU

容易被忽略的干扰项:RSS、GRO、RPS 之间会互相影响

比如开启 GRO(Generic Receive Offload)后,虽然减少了上层协议栈压力,但会延迟包交付、拉长 ring buffer 占用时间;而 RPS 和 RSS 同时启用可能导致 hash 冲突或重复分发,反而加剧某核负载。

  • 排查时建议先关掉 GRO:ethtool -K eth0 gro off,观察 rx_no_buffer_count 是否缓解
  • RSS 和 RPS 不要叠加使用——RSS 是硬件分流(推荐优先启用),RPS 是纯软件 fallback;两者共存可能打乱 CPU 缓存局部性
  • 检查是否启用了 XDP 或 tc clsact,某些 eBPF 程序会阻塞收包路径,间接导致 ring 消费变慢

真正稳定的调优往往不是单点拉高某个参数,而是让 ring depth、中断分布、NAPI 负载、offload 开关之间形成匹配。尤其是小包场景下,rx_no_buffer_count 上涨常常是多个环节微小延迟叠加的结果,而不是某一个 buffer 太小这么简单。

热门AI工具

更多
DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

相关专题

更多
堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

6247

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

2628

2023.08.10

class在c语言中的意思
class在c语言中的意思

在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

4176

2024.01.03

python中class的含义
python中class的含义

本专题整合了python中class的相关内容,阅读专题下面的文章了解更多详细内容。

306

2025.12.06

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

4270

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

3613

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2853

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

7010

2023.07.05

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

40

2026.10.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
GDB Reference Card
GDB Reference Card

共0课时 | 0人学习

《Debugging with GDB》用户手册
《Debugging with GDB》用户手册

共0课时 | 0人学习

Valgrind FAQ
Valgrind FAQ

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn