DPDK 有人玩过么?到底能提高多少性能?

2017-04-30 22:24:06 +08:00
 enihcam

如题。

8225 次点击
所在节点    Intel
7 条回复
auser
2017-04-30 22:29:03 +08:00
具体得看你想干什么,不结合业务来讲,这个问题根本无法回答。

如果做包转发,相比 x86 linux 肯定会大大提升性能。

cloudflare 说过他们为什么不把 Nginx 做在 dpdk 上:瓶颈不在 dpdk 处理的网络这块。
julyclyde
2017-05-01 07:32:39 +08:00
上一份工作里,有同事在做这方面工作
以前用 LVS,后来用 DPDK 自己写的,和阿里巴巴的那个类似(因为人是从阿里巴巴来的)

改之前:万兆跑满
改之后:万兆跑满
所以后来我的评价是做事风格也充满了阿里风,没事找事凑 KPI
enihcam
2017-05-01 09:24:01 +08:00
@auser 为了降低路由延迟,DPDK 能帮上忙么?
auser
2017-05-01 11:23:48 +08:00
@enihcam

DPDK 再快也是收包到送给应用层的时间短,而不是“转发”快。收到包后,各类检查跟查表(一般都是并发环境,加锁啊什么的,无锁?……哈哈)处理的时间,基本上都是要远远超过 DPDK 的自身开销的。

想要快过 Linux,要明白为什么 Linux 网络协议栈会“慢”,这个慢是相比 DPDK 的处理而言的,对大部分应用而言,上层的业务延迟已经没多大必要在网络方面下功夫。总之,能否降低路有延迟,要看应用环境(买得起那么多物理机么?有相应的稳定可靠人才支撑么?),然后再做 profiling,看瓶颈在哪里。不要想当然的 DPDK。

举例来说吧,做 UDP 的 DNS,就可以用 DPDK,绕过 Linux 协议栈提升 QPS. 如果做路由,我觉得拼不过硬件,我是不赞同这种做法的。为了低延迟,没有包的时候,DPDK 都要让 CPU 满载跑着,这时如果想提升吞吐量,延迟也会跟着上去。如果系统里边是多个干活程序一起跑的,老板穷或者不舍得买好机器,开发运维技能没跟着上去,DPDK 也会被用残的。

硬件差不多,网络 IO+内存类的程序,Linux 跑万兆是没问题的。楼上共享了个案例。最后一个问题:有多少公司的业务能达到万兆带宽?
auser
2017-05-01 11:27:06 +08:00
@enihcam

补充下。见过几个公司的产品,说转发性能有多高,还跟 DPDK 做了对比,有的更可笑的说 CPU 负载比 DPDK 要低一些……这些测试,本质上而言,其实在 DPDK 的文档里连代码都有:一个端口收包,送到另一个端口去。不过:这种不带任何处理的程序,何必要写个程序呢。
wangwen41097468
2021-09-03 17:33:19 +08:00
[冲破内核瓶颈,让 I/O 性能飙升] DPDK 工程师手册,官方文档,最新视频,开源项目,实战案例,论文,大厂内部 ppt,知名工程师一览表

https://github.com/0voice/dpdk_engineer_manual
artnowben
2022-11-23 17:59:13 +08:00
DPDK 性能很高,但是 bypass kernel ,上层的协议栈要自己做。以 dperf 为例,
dperf 使用 DPDK ,里面有 tcp 协议栈,可以达到几十亿并发,几千万 TCP 每秒新建,几百 Gbps 带宽。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/358289

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX