由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - C10M除了socket以外,还牵涉其他方面的技巧
相关主题
10M persistent TCP connectionswhy do we need to map user threads to kernel threads?
求推荐一个真心交流技术的地方废话少说,单机500万次每秒
C10M 练习2: 空TCP 连接,1M per 4G RAMgoodbug做C10M?
C++ 有没有像go routine/channel 一样的库/框架?各位所在公司的code review烦人不?
这个版看来是毁了在一个技术版面骂脏话、搞人身攻击,这都是垃圾的行为
我的实测结果,纯计算每秒50M次interlocked.increment这个版上就是一堆打嘴炮的
C10M 练习 step 1: 10M socketscoroutine or thread
thread, semaphore, 问题。弱问:1us包含packet在网卡里和kernel里处理的时间吗?
相关话题的讨论汇总
话题: c10m话题: kernel话题: threading话题: coroutine话题: socket
进入Programming版参与讨论
1 (共1页)
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 里提到过。

1 (共1页)
进入Programming版参与讨论
相关主题
弱问:1us包含packet在网卡里和kernel里处理的时间吗?这个版看来是毁了
socket re-connection problem我的实测结果,纯计算每秒50M次interlocked.increment
Help: Socket.SendFile() cannot be recognized by c# compilerC10M 练习 step 1: 10M sockets
初级socket问题thread, semaphore, 问题。
10M persistent TCP connectionswhy do we need to map user threads to kernel threads?
求推荐一个真心交流技术的地方废话少说,单机500万次每秒
C10M 练习2: 空TCP 连接,1M per 4G RAMgoodbug做C10M?
C++ 有没有像go routine/channel 一样的库/框架?各位所在公司的code review烦人不?
相关话题的讨论汇总
话题: c10m话题: kernel话题: threading话题: coroutine话题: socket