如题。
1
auser 2017-04-30 22:29:03 +08:00 via iPhone
具体得看你想干什么,不结合业务来讲,这个问题根本无法回答。
如果做包转发,相比 x86 linux 肯定会大大提升性能。 cloudflare 说过他们为什么不把 Nginx 做在 dpdk 上:瓶颈不在 dpdk 处理的网络这块。 |
2
julyclyde 2017-05-01 07:32:39 +08:00 1
上一份工作里,有同事在做这方面工作
以前用 LVS,后来用 DPDK 自己写的,和阿里巴巴的那个类似(因为人是从阿里巴巴来的) 改之前:万兆跑满 改之后:万兆跑满 所以后来我的评价是做事风格也充满了阿里风,没事找事凑 KPI |
4
auser 2017-05-01 11:23:48 +08:00 1
@enihcam
DPDK 再快也是收包到送给应用层的时间短,而不是“转发”快。收到包后,各类检查跟查表(一般都是并发环境,加锁啊什么的,无锁?……哈哈)处理的时间,基本上都是要远远超过 DPDK 的自身开销的。 想要快过 Linux,要明白为什么 Linux 网络协议栈会“慢”,这个慢是相比 DPDK 的处理而言的,对大部分应用而言,上层的业务延迟已经没多大必要在网络方面下功夫。总之,能否降低路有延迟,要看应用环境(买得起那么多物理机么?有相应的稳定可靠人才支撑么?),然后再做 profiling,看瓶颈在哪里。不要想当然的 DPDK。 举例来说吧,做 UDP 的 DNS,就可以用 DPDK,绕过 Linux 协议栈提升 QPS. 如果做路由,我觉得拼不过硬件,我是不赞同这种做法的。为了低延迟,没有包的时候,DPDK 都要让 CPU 满载跑着,这时如果想提升吞吐量,延迟也会跟着上去。如果系统里边是多个干活程序一起跑的,老板穷或者不舍得买好机器,开发运维技能没跟着上去,DPDK 也会被用残的。 硬件差不多,网络 IO+内存类的程序,Linux 跑万兆是没问题的。楼上共享了个案例。最后一个问题:有多少公司的业务能达到万兆带宽? |
5
auser 2017-05-01 11:27:06 +08:00
@enihcam
补充下。见过几个公司的产品,说转发性能有多高,还跟 DPDK 做了对比,有的更可笑的说 CPU 负载比 DPDK 要低一些……这些测试,本质上而言,其实在 DPDK 的文档里连代码都有:一个端口收包,送到另一个端口去。不过:这种不带任何处理的程序,何必要写个程序呢。 |
6
wangwen41097468 2021-09-03 17:33:19 +08:00
[冲破内核瓶颈,让 I/O 性能飙升] DPDK 工程师手册,官方文档,最新视频,开源项目,实战案例,论文,大厂内部 ppt,知名工程师一览表
https://github.com/0voice/dpdk_engineer_manual |
7
artnowben 2022-11-23 17:59:13 +08:00
DPDK 性能很高,但是 bypass kernel ,上层的协议栈要自己做。以 dperf 为例,
dperf 使用 DPDK ,里面有 tcp 协议栈,可以达到几十亿并发,几千万 TCP 每秒新建,几百 Gbps 带宽。 |