红联Linux门户
Linux帮助

freebsd里的kqueue 和linux 2.6下的epoll

发布时间:2007-03-08 00:50:06来源:红联作者:LinuxLevel
  1、freebsd里的kqueue和linux 2.6下的epoll
  两个东西极其相似,写好了一个之后,移到别外一个平台下,只要稍作修改就可以了,原理是一样,个人认为,从功能角度来盾kqueue比epoll灵活得多。在写kqueue的时候,内核帮你考虑好了不少东西。但是从效率来看,从我作的压力测试来看epoll比kqueue强。看看我的实验结果吧
  客户端: linux ,P3,256M ,pthread多线程程序,开1万个线程,可是实际运行结果是,在linux2.4上只能打开4000多个线程的时候就报资源不足,郁闷了好久,不知道是什么资源,最大打开文件数是够了,内存也够(通过设置16k的栈空间)。后来把客户端移到linux2.6内核下,很快开出1万个线程来了。
  epoll服务器端:P3,256M,在一万个并发线程下,面不改色,有条不紊地处理着数据,并发数能达到8000个连接。
  kqueue服务器端:结果比较失望,在只能一条队列的情况下,并发数只能到2000,然后在客户端的读取数据时就会出现"connect reset by peer"的错误。后来改用了两条队列,一条用来接收新连接,一条用来处理原有的连接。在这种情况下,并发数也只能到3000,然后又会陆陆续续出现连接的错误。
  2、关于pthread库的内容,加深了一下了解,学会了几个新的调用。
  3、关于freebsd和linux上的一些系统调置方面的东西。
  最大打开文件数,在linux,直接用ulimit -a可以看到,并用ulimit进行修改,运行时有效。在freebsd下,用sysctl -a|grep kern.maxfilesperproc 来查询,也可能直接修改。
文章评论

共有 0 条评论