首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Intel

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

  •  
  •   enihcam · 2017-04-30 22:24:06 +08:00 · 4136 次点击
    这是一个创建于 954 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题。

    5 回复  |  直到 2017-05-01 11:27:06 +08:00
        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
        3
    enihcam   2017-05-01 09:24:01 +08:00
    @auser 为了降低路由延迟,DPDK 能帮上忙么?
        4
    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 跑万兆是没问题的。楼上共享了个案例。最后一个问题:有多少公司的业务能达到万兆带宽?
        5
    auser   2017-05-01 11:27:06 +08:00
    @enihcam

    补充下。见过几个公司的产品,说转发性能有多高,还跟 DPDK 做了对比,有的更可笑的说 CPU 负载比 DPDK 要低一些……这些测试,本质上而言,其实在 DPDK 的文档里连代码都有:一个端口收包,送到另一个端口去。不过:这种不带任何处理的程序,何必要写个程序呢。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2320 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 21ms · UTC 15:27 · PVG 23:27 · LAX 07:27 · JFK 10:27
    ♥ Do have faith in what you're doing.