1
Keyes 2018-05-04 10:52:34 +08:00 1
“新补丁对性能 [几乎] 没有影响”
2.0 包转发都是走的 DPDK,对内核上没有依赖,全是用户态搞的,所以你内核爱怎么打补丁就怎么打补丁 |
2
iwtbauh 2018-05-04 10:58:27 +08:00 via Android 1
”采用的用户态驱动和 I/O 协议栈模式......发送 I/O 的工作都是直接在用户态做的,不牵扯到系统调用“
用户空间驱动应该影响更严重啊 毕竟驱动和应用程序通信时还是需要内核调用,而且需要更多次,并且还有上下文切换的巨额开销。 比如我一个服务器网络应答吧,我最终是调用 write/send/...系统调用,最终调用网络驱动程序,但是如果这个驱动是在用户空间中实现的,首先上下文切换的开销是免不了的,另外用户空间也需要事先阻塞在一个系统调用上,然后再读取、调用、阻塞,相当于调用了最少 2 倍的系统调用 除了硬件异常(如缺页异常)以外,用户空间与内核交互最终都需要通过系统调用,其实系统调用本质上也是一种软件中断(异常) 我读书少你不要骗我 |
3
catinred 2018-05-04 11:25:12 +08:00 1
别人性能指标从 10 降到 6,它是从 5 降到 4,降幅比别人小,就可以对外宣称『没影响』了。
|
4
simpx 2018-05-04 11:25:36 +08:00 1
@iwtbauh #2
以前是 "应用" --> "kernel" --> "kernel 内的 driver" --> "网卡" 现在是 "应用" --> "dpdk" --> "dpdk 内的 driver" --> "网卡" 不需要系统调用,不需要和内核交互,也不需要上下文切换 |
6
GreatEscape 2018-05-04 11:56:28 +08:00
@simpx 你是不是对 DPDK 有什么误解。
DPDK 的 driver 和普通的 driver 一样都是一个内核模块,只是收到报文后不打包成 skb 走内核的协议栈,直接放到一块通过 mmap 映射到用户态的空间上,里面简单来讲就是一个环形队列。 不是说协议栈放在了用户态就不需要和内核交互了,比如底层的 poll 之类的还是会涉及系统调用的。 |
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 获取网卡状态,不涉及系统调用 |
8
innoink 2018-05-04 12:07:07 +08:00 via Android
单纯数据通路是基本不涉及系统调用的
|
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 了? |
10
forestyuan 2018-05-04 17:55:39 +08:00
市场宣传不要太当真
|
11
wangxiyi077 OP @keyes @simpx
Intel 官网上表示 SPDK 性能也受补丁影响,单核只得原有性能 75%。不是很懂,请指教。 https://newsroom.intel.cn/news-releases/press-release-2018-jan-18/ |
12
simpx 2018-05-04 22:23:47 +08:00 1
@CRVV #9
你说的是虚拟机内部的应用,这个还是像你理解的,写普通的 C 程序,性能会被补丁影响。我说的是存储系统内部,用了 dpdk,不受补丁影响 @wangxiyi077 #11 这个我也不了解,你的链接里说,SPDK iSCSI 会受影响,SPDK vHOST 不受影响。可能 iSCSI 有什么和内核交互的逻辑? |
13
zhfish 2018-05-05 00:56:27 +08:00
本身就不快,没什么可降的。。
|
14
choury 2018-05-05 01:08:27 +08:00 via Android
@CRVV 你肯定没写过 dpdk 的程序,哪有什么 write 让你用,连 tcp 协议都要你自己实现
|