为什么 DPDK VirtIO 只能跑到 40Gbps?—— 一次 KVM 虚拟交换机性能瓶颈定位全过程(上)
一、一个令人困惑的现网问题某云计算厂商上线了一套基于DPDK KVM的高性能虚拟交换平台。整体网络架构如下┌──────────────┐ │ Physical NIC │ │ Intel E810 │ └──────┬───────┘ │ DPDK vSwitch │ vhost-user │ QEMU/KVM │ VirtIO-Net │ Guest DPDK设计目标非常明确物理网络100GbEGuestDPDK PMD宿主机DPDK vSwitchZero Copy单 VM 满速接近 100Gbps实验室测试中小包、大包都表现正常。然而真正上线以后监控平台却发现了一个奇怪的现象包长理论吞吐实际吞吐64 Bytes100Gbps36~40Gbps512 Bytes100Gbps42Gbps 左右1500 Bytes接近 100Gbps92~95Gbps也就是说只有小包性能异常。更奇怪的是宿主机 CPU平均利用率 48%Guest CPU42%PMD没有忙轮询瓶颈。Descriptor没有耗尽。没有任何RX Miss TX Error No Mbuf Ring Full整个系统看起来一切正常。但是吞吐率就是上不去。二、所有人都认为是 PMD 性能不足第一次排查时。整个团队几乎一致认为一定是 PMD 跑满了。于是开始查看dpdk-proc-info --stats所有 Port统计如下RX packets : 正常 TX packets : 正常 RX errors : 0 TX errors : 0 RX no mbuf : 0 RX missed : 0继续查看PMD LoopCPU 42% Idle 58%这意味着PMD并没有跑满。于是有人开始怀疑RSS是不是分布不均检查RSS所有 QueueQueue0 Queue1 Queue2 Queue3 ...... Packets 基本一致RSS正常。继续NUMA。结果Guest Memory Local Host HugePage Local NIC LocalNUMA也没有问题。到这里整个团队几乎陷入了僵局。三、问题真的发生在 VirtIO 吗为了进一步定位。我们绕开 Guest。直接HostDPDK转发E810结果98Gbps完全正常。说明DPDK没有问题。继续绕开VirtIO。改成SR-IOV VF直通Guest再次测试96Gbps依然正常。问题第一次真正开始收敛。如果Host正常、Guest、DPDK正常、SR-IOV正常。那么唯一发生变化的。只有VirtIO vhost-user整个团队开始把目光放到VirtIO。四、Perf 火焰图暴露了真正的热点为了定位到底CPU时间花在哪里。我们在Host运行perf record -g随后生成火焰图。得到如下热点vhost_worker() │ vring_avail_event() │ vring_need_event() │ eventfd_write() │ syscall占比超过31%继续Guest采样结果热点几乎全部集中virtio_recv_pkts() ↓ virtqueue_get_buf() ↓ used_idx这里第一次出现一个陌生名字Virtqueue。也是VirtIO性能真正开始分化的地方。五、VirtIO 真正的数据通路很多人认为VirtIO就是共享内存。实际上真正的数据流远比想象复杂。整体过程如下Guest mbuf │ ▼ VirtIO Driver │ ▼ Descriptor Table │ ▼ Available Ring │ ▼ Kick Host │ ▼ vhost-user │ ▼ Host DPDK │ ▼ NIC DMA如果反方向则Host完成DMA以后。继续Used Ring ↓ Notify Guest ↓ Guest PMD ↓ mbuf看到这里。很多开发者都会觉得没有什么特别。其实真正的问题。并不是Descriptor。而是后面的两个动作。Kick Notify六、真正拖慢性能的不是拷贝而是通知Notification很多开发者第一次接触 VirtIO 时都会重点关注Descriptor 是否连续是否 Zero Copy是否发生数据拷贝这些当然重要。但在高 PPSPackets Per Second场景下真正限制性能的往往不是数据路径而是控制路径。对于每一批发送完成的数据Guest 都需要通知 Host“新的 Descriptor 已经准备好了。”这个动作称为Kick同样Host处理完成以后。又需要通知GuestNotify如果每一个Burst都Kick。Host就需要不停响应通知。CPU不断发生Guest ↓ VM Exit ↓ KVM ↓ vhost-user ↓ 继续处理而VM Exit正是整个虚拟化里面最昂贵的操作之一。为什么小包只能40Gbps真正答案开始慢慢浮现。未完待续

相关新闻

Pyfakefs核心原理揭秘:如何在内存中构建虚拟文件系统

Pyfakefs核心原理揭秘:如何在内存中构建虚拟文件系统

Pyfakefs核心原理揭秘:如何在内存中构建虚拟文件系统 【免费下载链接】pyfakefs Provides a fake file system that mocks the Python file system modules. 项目地址: https://gitcode.com/gh_mirrors/py/pyfakefs Pyfakefs是一个强大的Python库&#xff0c…

2026/7/17 9:20:46阅读更多 →
揭秘mini-coder-4b-OptiQ-4bit的核心技术:敏感度感知量化如何实现性能飞跃

揭秘mini-coder-4b-OptiQ-4bit的核心技术:敏感度感知量化如何实现性能飞跃

揭秘mini-coder-4b-OptiQ-4bit的核心技术:敏感度感知量化如何实现性能飞跃 【免费下载链接】mini-coder-4b-OptiQ-4bit 项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/mini-coder-4b-OptiQ-4bit 在AI模型部署的实践中,模型量化一直…

2026/7/17 9:20:46阅读更多 →
BillaBear 工作流系统详解:自动化你的订阅业务逻辑

BillaBear 工作流系统详解:自动化你的订阅业务逻辑

BillaBear 工作流系统详解:自动化你的订阅业务逻辑 【免费下载链接】billabear Subscription Management and Billing System 项目地址: https://gitcode.com/gh_mirrors/bi/billabear BillaBear 作为一款强大的订阅管理与计费系统,其工作流系统是…

2026/7/17 9:20:46阅读更多 →
51单片机温控遥控风扇:PWM调速与红外控制实战指南

51单片机温控遥控风扇:PWM调速与红外控制实战指南

这次我们来看一个经典的嵌入式系统项目——基于51单片机的温控遥控风扇。这个项目结合了温度传感、PWM调速和遥控控制,是学习单片机应用的绝佳实践案例。 从淘宝等平台的销售情况看,这类项目套件非常受欢迎,价格从几元到上百元不等&#xff…

2026/7/17 10:25:58阅读更多 →
人设与提示词

人设与提示词

2.1.1 人设定义人设即智能体扮演的角色,是智能体的“岗位说明书”,它从顶层定义了智能体的核心行为范式,直接决定了智能体在交互过程中的专业身份、沟通风格、服务定位、应答口吻与行为准则,是智能体能力落地、场景适配与模块配置…

2026/7/17 10:25:58阅读更多 →
Cursor免费助手:一键获取AI编程无限额度的终极解决方案

Cursor免费助手:一键获取AI编程无限额度的终极解决方案

Cursor免费助手:一键获取AI编程无限额度的终极解决方案 【免费下载链接】cursor-free-everyday 完全免费, 自动获取新账号,一键重置新额度, 解决机器码问题, 自动满额度 项目地址: https://gitcode.com/gh_mirrors/cu/cursor-free-everyday 在AI编程工具日益…

2026/7/17 10:25:58阅读更多 →
终极指南:如何用LeRobot构建真实世界机器人AI系统

终极指南:如何用LeRobot构建真实世界机器人AI系统

终极指南:如何用LeRobot构建真实世界机器人AI系统 【免费下载链接】lerobot 🤗 LeRobot: Making AI for Robotics more accessible with end-to-end learning 项目地址: https://gitcode.com/GitHub_Trending/le/lerobot 想要将先进的AI模型应用到…

2026/7/17 10:25:58阅读更多 →
扣子平台简介

扣子平台简介

扣子(Coze)是字节跳动推出的以智能体开发为核心、同时覆盖完整 AI 应用开发与运营的一站式平台,其通过低代码/零代码的开发模式,打破技术壁垒,赋能用户快速构建、调试与部署AI应用。作为当前AI应用层开发领域的标杆平台…

2026/7/17 10:25:58阅读更多 →
open-saas 企业级微服务架构深度解析:从单体到模块化的演进之路

open-saas 企业级微服务架构深度解析:从单体到模块化的演进之路

open-saas 企业级微服务架构深度解析:从单体到模块化的演进之路 【免费下载链接】open-saas A 100% free modern JS SaaS boilerplate (React, NodeJS, Prisma). Full-featured: Auth (email, google, github, slack, MS), Email sending, Background jobs, Landing…

2026/7/17 10:20:57阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/16 8:28:11阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/17 8:31:03阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/16 12:02:41阅读更多 →
VS Code 高效配置与个性化定制全攻略

VS Code 高效配置与个性化定制全攻略

1. VS Code 高效配置基础作为一款轻量级但功能强大的代码编辑器,VS Code 的默认配置已经能满足基本需求,但通过合理调整设置可以大幅提升编码效率。我使用 VS Code 已经有五年多时间,期间尝试过各种配置方案,总结出这套适合大多数…

2026/7/17 0:00:01阅读更多 →
从竞赛代码到桌面工具:让 SuperADD 与 SubspaceAD 真正跑进自己的图像

从竞赛代码到桌面工具:让 SuperADD 与 SubspaceAD 真正跑进自己的图像

在异常检测领域,很多优秀算法最初都是以研究代码的形式发布的。它们能够在固定测试集上复现实验结果,却不一定能被普通用户直接拿来测试自己的图片。尤其是最近很多算法仅提供在固定测试集的测试环境,而gradio的demo演示也不会提供。 对工程应用和在自己的图片上进行测试来…

2026/7/17 0:00:01阅读更多 →
WinRAR高效配置指南:从基础安装到高级压缩实战

WinRAR高效配置指南:从基础安装到高级压缩实战

前几天帮同事处理一个客户发来的压缩包,解压时系统自带的工具弹出一串乱码,换用 WinRAR 却顺利打开了。这种看似简单的场景,恰恰暴露了不同压缩工具在处理非标准编码、分卷压缩或加密文件时的差异。WinRAR 作为一款老牌工具,真正价…

2026/7/17 0:00:01阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/16 20:13:14阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/16 8:58:42阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/16 17:10:26阅读更多 →