winsock 改进的select模型 PK 完成端口(ZZ)

http://hi.baidu.com/spkiller/blog/item/b216a80176137f00728da57f.html

完成端口理论值socket上限是6万多,也就是说纯连接能达到65535个,而select只能64个,更改了FD_MAXSIZE后最多1024,但是实际只能支撑七八百的极限。
由于某天对Winsock select模型的一个奇怪猜想,google、baidu了半天均无前例,于是写了两个socket类进行实验,一个是改进select模型的核心,一 个是完成端口,另外还有一个原始select模型,相同接口,相同测试程序,测试程序是写的一个支持单独TCP-CONNECT的socks5代理服务 器,大致测试结果如下:
传输总带宽10Mbps占满:
原始select为多线程,每线程512socket容量,完成端口为1个工作线程,改进select为1个轮循线程

50连接以下,原始select、完成端口、改进select性能基本相同,CPU占用依次是(%):3-5,0-1,7-11
500连接,原始select基本不能工作,完成端口和改进select性能基本相同,CPU占用依次(%):70以上,5-8,7-11
2000连接,原始select完全不能工作,完成端口和改进select性能基本相同,CPU占用依次(%):100,40-50,40-50
10000连接,原始select完全不能工作,完成端口和改进select性能基本相同,CPU占用依次(%):100,90-100,100
 


你可能感兴趣的:(select)