BBS水木清华站∶精华区

发信人: nudtbegger (军人), 信区: Linux 
标  题: Re: 关于LINUX的质量质疑 
发信站: BBS 水木清华站 (Thu Jul 29 13:05:39 1999) WWW-POST 
 
【 在 mephisto (魔鬼*修心养性*重新做人) 的大作中提到: 】 
 5000p/s 是在计费的采集上,没有那么小的包. 
但是,就是包大一点,也远不到100M呀 
 100M是用两台host ping -f 来测的,因为有碰撞,到底有多少包没有参考标准, 
 是通过以ping方接受到和发送的包来算出包书目的上限,采集很靠近这个上限 
 我没有试过. > 50% < 90% ? 
 
理论上,一台发,一台受,假使每个包是64BYTE,那么,发一个包要512位时, 
包间隙512位时,由于无碰撞,所以是50M,如果包大,那么可以接近100M, 
100*1518/(1518+64) 
 
 10ms包括了切换. 
 这个不能一下子说清楚. RT 有实时部份和非实时的部分.看你需求是如何产生的 
 不对. It depends. The IRQ respons have two part. the top half and the 
 buttom half. The top half is short and not interruptable. The buttom half 
 is long. I don't beleive OS do not have not interruptable part. 
 Linux的提法不一样,我看功能是一样的. select() 
 
你说的是SELECT呀,关于SELECT,我想多说两句,这两天我特地回去看了看LINUX 里异 
步IO到底是怎么回事。在一个师兄的帮助下翻了翻SOURCE,就一些问题向他请教了一下。 
 
后来我发现情况似乎不是很好,select是LINUX里主要支持异步 
IO的API(若不对,请指正),如果要在一个现程里等待多个CLIENT的连接,更是 
只有用它(也许是我孤陋寡闻)但是SELECT的实现方法简直是愚笨之极(个人看法),让 
 
我这等在WIN32下享受了好处的人简直不能相信。 
下面我慢慢谈谈我个人的一些看法。 
什么时候我们要用异步IO?因为多现程的使用,原有的一些背景已经不存在了,你完全可 
以 
另开一个现程去执行那个费事的IO,而且,如果象DISK IO,因为完成时间可预测,而且 
 
次数不会太多,发生也是可预测的,所以,如果你不想用异步IO,用多现程的方法是可以 
 
很好的解决这个问题的。在目前而言,异步IO的主要使用背景在于网络应用,而且是象 
数据采集(本人对此很有兴趣),SERVER等数据量不可预测,BRUST流量大的应用。 
比如说,在LINUX下做一个SERVER(WEB,FTP,TELNET ETC),我想没有人会同意对每 
个连接都创建一个线程的苯方法吧?(创建一个进程更不在考虑之列)这样做,当然可 
行,而且如果只有10个连接,只在自己实验机房,只有10台PC,当然没问题。但是,这个 
 
方法显然太浪费资源,很难想象如果有一千人的同时连接会发生什么。首先是现程太多, 
 
其次是CPU要花更多的时间去管理线程,还有就是编程者要用到更多的同步信号等核心对 
象。 
于是,我们想到了异步IO,我们不用一个连接对于一个线程,可以一个线程对应多个连接 
。 
线程发出异步IO后,只要等待事件就行了。但是SELECT有一个大问题在于,当事件到来时 
, 
系统通知所有的等待该事件的线程,但是,事实却是,当来了一个新的连接时,只有一个 
 
现程有必要被唤醒,其余的线程只有回到等待状态。这种实现方式将带来两大开销,第一 
, 
所有的线程都被唤醒,到底哪一个去完成服务呢?在线程中要协调。第二,线程被唤醒了 
, 
CPU又要分配时间给该线程,虽然它马上就又进入等待状态。可是该线程本不该被唤醒的 
。 
这样一来,一个WEB SERVER的设计只好采用老套路,一个线程守着,当CLIENT来的时候, 
 
它自己处理,同时唤醒或产生另外一个线程来守侯。或者当CLIENT来的时候,它自己不处 
理, 
唤醒或产生一个线程来处理,自己仍然守侯。这种情况还是会带来一些开销,因为每当一 
个 
CLIENT REQUEST到来的时候,守侯线程接到了请求,却要通知别的线程。 
如果是在NT下,完全没有必要如此麻烦,NT里的同样情况,系统只要唤醒一个线程,尽管 
有多 
个线程在等待同一个事件。NT下大家都很熟,相信大家不用我多说。 
 
关于SELECT的缺陷,先就敲到这里了,还有些话,还要把代码翻出来,再考虑考虑再说。 
 
 
另外,由于小弟我对LINUX实在是不太熟,属于初通皮毛的那种,才一级无,但是刚刚从 
 
0级伸到1级,心情还是激动的。请各位高级玩家指正帮助。 
 
 
 
 不是发信号,是把进程叫醒 
 
 
-- 
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 202.197.0.1]  

BBS水木清华站∶精华区