T********i 发帖数: 2416 | 1 TCP的设计确实够烂。几十年来一直没停的patch。
现实中人不可能不犯错误,大系统的可靠性足够让任何相关人士一直提心吊胆。
OpenOnLoad其实也是大路货。比如错误,就是connect不尊重SO_SNDTIMEO。表现就是
non-blocking connect不能timeout报错。最新版本也没解决。这些,没做过的不可能
知道。
其实,我一直都不担心C10M maintain connection的问题。我关心的是,系统
bandwidth能做到什么程度。这些,基本上和socket API无关了。但是和你的threading
model + I/O model有关。
SSA曾经问过我连接少的话,epoll即使不是最优的,性能也不会差对不对?其实,这要
结合应用去理解。我要求latency尽可能低。epoll两个选项,一个是spin,这样会占用
一个core,一个是kernel wait,这样会有context switch。我系统只有16个core呀。
这样就需要有创造性了。其实,技术离不开commen sense。
真正做C10M,其中的同步技巧,很多是conter intuitive的。绝对是学校里没有学到的
。真正的核心问题,是两个单词,第二个是memory,至于第一个,大家猜猜。 |
p*u 发帖数: 2454 | 2
threading
Coroutine?
【在 T********i 的大作中提到】 : TCP的设计确实够烂。几十年来一直没停的patch。 : 现实中人不可能不犯错误,大系统的可靠性足够让任何相关人士一直提心吊胆。 : OpenOnLoad其实也是大路货。比如错误,就是connect不尊重SO_SNDTIMEO。表现就是 : non-blocking connect不能timeout报错。最新版本也没解决。这些,没做过的不可能 : 知道。 : 其实,我一直都不担心C10M maintain connection的问题。我关心的是,系统 : bandwidth能做到什么程度。这些,基本上和socket API无关了。但是和你的threading : model + I/O model有关。 : SSA曾经问过我连接少的话,epoll即使不是最优的,性能也不会差对不对?其实,这要 : 结合应用去理解。我要求latency尽可能低。epoll两个选项,一个是spin,这样会占用
|
S*A 发帖数: 7142 | 3 Coroutine 是写 C based 的 serverlet 几乎必然用到的。
这个我也在玩。看看老Wei 如何说吧。
【在 p*u 的大作中提到】 : : threading : Coroutine?
|
T********i 发帖数: 2416 | 4 没这么复杂。cotoutine还要保存separate stack。
呵呵,让我想起Apple Lisa和Windows 3.0的时代。 |
T********i 发帖数: 2416 | 5 基本原理都是一样的。我说过EE玩SOC的更能理解。
其实,我用C++写几个小class,没啥必要做的这么generic。
【在 S*A 的大作中提到】 : Coroutine 是写 C based 的 serverlet 几乎必然用到的。 : 这个我也在玩。看看老Wei 如何说吧。
|
b*******s 发帖数: 5216 | 6 第二个是不是和kernel有关
threading
【在 T********i 的大作中提到】 : TCP的设计确实够烂。几十年来一直没停的patch。 : 现实中人不可能不犯错误,大系统的可靠性足够让任何相关人士一直提心吊胆。 : OpenOnLoad其实也是大路货。比如错误,就是connect不尊重SO_SNDTIMEO。表现就是 : non-blocking connect不能timeout报错。最新版本也没解决。这些,没做过的不可能 : 知道。 : 其实,我一直都不担心C10M maintain connection的问题。我关心的是,系统 : bandwidth能做到什么程度。这些,基本上和socket API无关了。但是和你的threading : model + I/O model有关。 : SSA曾经问过我连接少的话,epoll即使不是最优的,性能也不会差对不对?其实,这要 : 结合应用去理解。我要求latency尽可能低。epoll两个选项,一个是spin,这样会占用
|
T********i 发帖数: 2416 | 7 不知道你说的是什么第二个?但是我可以肯定和kernel无关。
kernel要尽量bypass。
【在 b*******s 的大作中提到】 : 第二个是不是和kernel有关 : : threading
|
b*******s 发帖数: 5216 | 8 我的意思也是啊,尽量是user space
【在 T********i 的大作中提到】 : 不知道你说的是什么第二个?但是我可以肯定和kernel无关。 : kernel要尽量bypass。
|
S*A 发帖数: 7142 | 9 是不是就是保留一些 core kernel 不能用,
然后自己直接用啊。这个 robert 的 C10M 里提到过。 |
b*******s 发帖数: 5216 | 10 不知道,要等老魏说说了
【在 S*A 的大作中提到】 : 是不是就是保留一些 core kernel 不能用, : 然后自己直接用啊。这个 robert 的 C10M 里提到过。
|
T********i 发帖数: 2416 | 11 isolcpus=X,X,X,X,X,...
这个是必须的。
其实,此人帖子里提到的所有优化,我都做了。他没有提的,我也做了。当然,他没有
提的,并不代表他没做。我认为他也做了,只不过不愿意说罢了。
这种东西,就像接头暗号。问一个问题,如果双方都懂,那么彼此的默契马上就达成了。
【在 S*A 的大作中提到】 : 是不是就是保留一些 core kernel 不能用, : 然后自己直接用啊。这个 robert 的 C10M 里提到过。
|