据说阿里云的 I/O 吞吐不受 Meltdown 补丁影响? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
wangxiyi077
V2EX    程序员

据说阿里云的 I/O 吞吐不受 Meltdown 补丁影响?

  •  
  •   wangxiyi077 2018-05-04 10:45:31 +08:00 4763 次点击
    这是一个创建于 2728 天前的主题,其中的信息可能已经有所发展或是发生改变。
    https://zhuanlan.zhihu.com/p/33593012

    聊到 Intel 本次的 Meltdown 和 Spectre 漏洞,伯瑜研究员笑道,其实这次漏洞的影响恰好说明了,阿里云引擎 2.0 采用的用户态驱动和 I/O 协议栈模式,能够天然抗拒新的 OS 补丁对性能产生的影响,也就是说,新补丁对性能几乎没有影响,因为发送 I/O 的工作都是直接在用户态做的,不牵扯到系统调用,否则,本次补丁还真有可能大幅降低系统性能。



    联系上下文,他说的“阿里云引擎 2.0 ”是“云存储引擎”,补丁不是打在宿主机和虚拟机上面吗,宿主机和虚拟机不是通过网络访问分布式的存储节点吗,怎么它在存储节点装个“引擎”就能“天然抗拒”宿主机这边的性能下降?
    16 条回复    2018-05-05 02:23:37 +08:00
    Keyes
        1
    Keyes  
       2018-05-04 10:52:34 +08:00   1
    “新补丁对性能 [几乎] 没有影响”

    2.0 包转发都是走的 DPDK,对内核上没有依赖,全是用户态搞的,所以你内核爱怎么打补丁就怎么打补丁
    iwtbauh
        2
    iwtbauh  
       2018-05-04 10:58:27 +08:00 via Android   1
    ”采用的用户态驱动和 I/O 协议栈模式......发送 I/O 的工作都是直接在用户态做的,不牵扯到系统调用“

    用户空间驱动应该影响更严重啊

    毕竟驱动和应用程序通信时还是需要内核调用,而且需要更多次,并且还有上下文切换的巨额开销。

    比如我一个服务器网络应答吧,我最终是调用 write/send/...系统调用,最终调用网络驱动程序,但是如果这个驱动是在用户空间中实现的,首先上下文切换的开销是免不了的,另外用户空间也需要事先阻塞在一个系统调用上,然后再读取、调用、阻塞,相当于调用了最少 2 倍的系统调用

    除了硬件异常(如缺页异常)以外,用户空间与内核交互最终都需要通过系统调用,其实系统调用本质上也是一种软件中断(异常)

    我读书少你不要骗我
    catinred
        3
    catinred  
       2018-05-04 11:25:12 +08:00   1
    别人性能指标从 10 降到 6,它是从 5 降到 4,降幅比别人小,就可以对外宣称『没影响』了。
    simpx
        4
    simpx  
       2018-05-04 11:25:36 +08:00   1
    @iwtbauh #2

    以前是 "应用" --> "kernel" --> "kernel 内的 driver" --> "网卡"

    现在是 "应用" --> "dpdk" --> "dpdk 内的 driver" --> "网卡"

    不需要系统调用,不需要和内核交互,也不需要上下文切换
    chunk
        5
    chunk  
       2018-05-04 11:43:43 +08:00
    @iwtbauh 用户态的网络栈、文件系统的优势就是减少系统调用、重量级的 vfs 和 io 栈
    GreatEscape
        6
    GreatEscape  
       2018-05-04 11:56:28 +08:00
    @simpx 你是不是对 DPDK 有什么误解。
    DPDK 的 driver 和普通的 driver 一样都是一个内核模块,只是收到报文后不打包成 skb 走内核的协议栈,直接放到一块通过 mmap 映射到用户态的空间上,里面简单来讲就是一个环形队列。
    不是说协议栈放在了用户态就不需要和内核交互了,比如底层的 poll 之类的还是会涉及系统调用的。
    simpx
        7
    simpx  
       2018-05-04 12:03:38 +08:00
    @GreatEscape #6

    DPDK 的 driver 和普通的 driver 不一样,dpdk 的 pmd driver 在用户态,直接和固件打交道。网卡直接把报文放入注册好的内存,dpdk 用 polling 拿到

    你说的 "内核 driver" -> "mmap 出来的内存" -> "用户 polling 拿到"是以前 netmap 的做法,至少在新的硬件上,已经不需要这样了

    另外,polling 也只是用 pmd driver 获取网卡状态,不涉及系统调用
    innoink
        8
    innoink  
       2018-05-04 12:07:07 +08:00 via Android
    单纯数据通路是基本不涉及系统调用的
    CRVV
        9
    CRVV  
       2018-05-04 14:32:04 +08:00
    @simpx
    还是没有懂

    如果是普通的 C 程序,大概是这么写的
    ssize_t r = write(fd, buf, size);
    if (r < 0) { ... }
    这里 write 是系统调用

    那这个地方在阿里云上要怎么搞
    要把代码用 dpdk 重写么?还是说阿里云有神奇的机制不用改代码就直接用 dpdk 了?
    forestyuan
        10
    forestyuan  
       2018-05-04 17:55:39 +08:00
    市场宣传不要太当真
    wangxiyi077
        11
    wangxiyi077  
    OP
       2018-05-04 21:02:10 +08:00
    @keyes @simpx
    Intel 官网上表示 SPDK 性能也受补丁影响,单核只得原有性能 75%。不是很懂,请指教。
    https://newsroom.intel.cn/news-releases/press-release-2018-jan-18/
    simpx
        12
    simpx  
       2018-05-04 22:23:47 +08:00   1
    @CRVV #9
    你说的是虚拟机内部的应用,这个还是像你理解的,写普通的 C 程序,性能会被补丁影响。我说的是存储系统内部,用了 dpdk,不受补丁影响


    @wangxiyi077 #11
    这个也不了解,你的链接里说,SPDK iSCSI 会受影响,SPDK vHOST 不受影响。可能 iSCSI 有什么和内核交互的逻辑?
    zhfish
        13
    zhfish  
       2018-05-05 00:56:27 +08:00
    本身就不快,没什么可降的。。
    choury
        14
    choury  
       2018-05-05 01:08:27 +08:00 via Android
    @CRVV 你肯定没写过 dpdk 的程序,哪有什么 write 让你用,连 tcp 协议都要你自己实现
    tempdban
        15
    tempdban  
       2018-05-05 01:25:55 +08:00 via Android
    @simpx 太绝对了,参见 mlx4,就会教育你什么叫状态查询还要走系统调用,一个头两个大,
    调性能去了
    c3824363
        16
    c3824363  
       2018-05-05 02:23:37 +08:00
    @chunk
    @simpx
    是说它的构架是下面这种样子的么
    虚拟机网络收发 <===> DPDK <=====> 网卡
    虚拟机硬盘读写 <===> SPDK <=====> 物理存储设备
    虚拟机里的系统不需要特殊改动么, 只改动 qemu 实现就可以了么?

    还是说它直接用 DPDK SPDK 实现应用提供服务没虚拟机的事呢?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5431 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 37ms UTC 08:58 PVG 16:58 LAX 01:58 JFK 04:58
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86