0

0

ethtool -K 关闭 TSO/GSO 后网络性能反而下降的真实业务场景

舞夢輝影

舞夢輝影

发布时间:2026-01-19 17:37:23

|

208人浏览过

|

来源于php中文网

原创

关闭TSO/GSO导致网络性能下降,是因为在高吞吐、低延迟且CPU充足、网卡硬件能力强的场景(如K8s微服务RPC、VFIO直通存储、DPDK共存环境)中,强行关闭会增加softirq开销、小包激增、内存压力及调度失衡,正确做法是依据ethtool、softnet_stat和tcpdump数据判断真实瓶颈。

ethtool -k 关闭 tso/gso 后网络性能反而下降的真实业务场景

关闭 TSO/GSO 后网络性能下降,不是配置错了,而是用错了场景。真实业务中,这种“关了反而更慢”的情况往往出现在高吞吐、低延迟敏感但 CPU 资源充足、网卡硬件能力被低估的环境中。

典型业务场景:容器化微服务高频 RPC 通信

在 Kubernetes 集群中运行大量 gRPC 或 Thrift 服务,单 Pod 每秒发起数千次短连接或流式请求。此时若宿主机网卡(如 Intel X710、Mellanox ConnectX-5)支持高效 TSO/GSO,且内核已启用 GRO/LRO 配合处理接收端聚合,强行关闭 TSO/GSO 会导致:

  • 内核协议需对每个 TCP 报文做软件分段,显著增加 softirq 处理时间
  • veth pair + CNI 插件(如 Calico eBPF 或 Cilium)路径变长,小包数量激增,加剧队列竞争和丢包重传
  • iperf3 测试显示带宽从 9.2Gbps 掉到 5.8Gbps,同时 netstat -s 中 “TCP: packets retransmitted” 上升 3–5 倍

虚拟化平台直通网卡下的高性能存储访问

Proxmox VE 或 OpenStack 环境中,VM 使用 VFIO 直通 10G/25G 网卡访问 Ceph 或 NVMe-oF 存储后端。这类场景依赖网卡硬件完成大块数据的零拷贝分段与校验卸载:

  • 关闭 TSO/GSO 后,4MB 的写请求需拆成 ~2600 个 1500 字节的帧,触发大量 SKB 分配与释放,引发内存碎片和 slab 压力
  • ethtool -S 显示 tx_errors、tx_aborted_errors 明显上升,dmesg 出现 “skb_over_panic” 或 “page allocation failure”
  • iostat 观察到存储写入 IOPS 下降 40%,而 top 中 ksoftirqd/0 占用率持续高于 70%

DPDK 或用户态协议栈共存环境

当服务器同时运行 DPDK 应用(如 OVS-DPDK、FD.io VPP)和传统 Linux 网络栈服务(如 Nginx、PostgreSQL)时,TSO/GSO 关闭可能破坏协同逻辑:

Vinteo AI
Vinteo AI

利用人工智能在逼真的室内环境中创建产品可视化。无需设计师和产品照片拍摄

下载
  • DPDK 应用通常绕过内核,依赖网卡硬件完成分段;而 Linux 栈服务关闭 TSO 后发包变小,导致同一物理队列中大小包混杂,破坏硬件调度公平性
  • tc qdisc(如 fq_codel)对小包的排队延迟敏感,平均 RTT 从 80μs 升至 220μs,P99 延迟翻倍
  • 抓包发现发送端 tcpdump 显示大量 1500 字节帧,但接收端 wireshark 解析出重复 ACK 和 SACK 乱序,说明链路层效率反被削弱

关键判断依据:别只看 CPU,要看路径瓶颈在哪

是否该关 TSO/GSO,不能只看“CPU 高不高”。真正要查的是:

  • ethtool -S eth0 中 tx_tso_packets / rx_gro_packets 是否为 0(说明硬件没起作用,关了也没损失)
  • cat /proc/net/softnet_stat 第 1 列(processed)和第 2 列(dropped)比值是否持续 > 1000(软中断过载才值得关)
  • tcpdump -i eth0 -nn -c 100 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0' 看 SYN/FIN 包占比——若超 15%,说明连接极短,TSO 效益本就有限

不复杂但容易忽略:关卸载是调优手段,不是默认动作。先确认瓶颈真在 CPU 分段,再动手。

相关专题

更多
nginx 重启
nginx 重启

nginx重启对于网站的运维来说是非常重要的,根据不同的需求,可以选择简单重启、平滑重启或定时重启等方式。本专题为大家提供nginx重启的相关的文章、下载、课程内容,供大家免费下载体验。

230

2023.07.27

nginx 配置详解
nginx 配置详解

Nginx的配置是指设置和调整Nginx服务器的行为和功能的过程。通过配置文件,可以定义虚拟主机、HTTP请求处理、反向代理、缓存和负载均衡等功能。Nginx的配置语法简洁而强大,允许管理员根据自己的需要进行灵活的调整。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

499

2023.08.04

nginx配置详解
nginx配置详解

NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。本专题为大家提供nginx配置相关的文章,大家可以免费学习。

498

2023.08.04

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

227

2024.02.23

nginx报404怎么解决
nginx报404怎么解决

当访问 nginx 网页服务器时遇到 404 错误,表明服务器无法找到请求资源,可以通过以下步骤解决:1. 检查文件是否存在且路径正确;2. 检查文件权限并更改为 644 或 755;3. 检查 nginx 配置,确保根目录设置正确、没有冲突配置等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

333

2024.07.09

Nginx报404错误解决方法
Nginx报404错误解决方法

解决方法:只需要加上这段配置:try_files $uri $uri/ /index.html;即可。想了解更多Nginx的相关内容,可以阅读本专题下面的文章。

3508

2024.08.07

nginx部署php项目教程汇总
nginx部署php项目教程汇总

本专题整合了nginx部署php项目教程汇总,阅读专题下面的文章了解更多详细内容。

16

2026.01.13

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

19

2026.01.13

PS使用蒙版相关教程
PS使用蒙版相关教程

本专题整合了ps使用蒙版相关教程,阅读专题下面的文章了解更多详细内容。

23

2026.01.19

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.4万人学习

Git 教程
Git 教程

共21课时 | 2.8万人学习

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号