Messages in this thread | | | Date | Sun, 27 Feb 2005 23:36:40 +0000 | From | "" <> | Subject | Re: Yet another I/O modeling |
| |
Quoting Neil <neil@qlsc.sdu.edu.cn>:
> hi,all > select/poll I/O modeling is fast,easy to use,it returns the number of fd > which are acitvity,but you should scan the fd array to find which fd is > ready,it costs a lot of time on a heavy load server. > > I proposal another I/O modeling,named eselect. > struct eselect_struct{ > unsigned long readbitmap[MAXBITMAPFD];//suppose the MAXBITMAPFD is > MAX OPEN //FD NUMBER PER PROCESS > int ret;//-1 on error,non-negative return value is the number of > //acitvity fds > } > we can use __set_bit(),__clear_bit(),__find_first_bit()....functions to > maintain the bitmap. > So,you shouldnt scan the fd array any more.
I really don't see why __find_first_bit() is better than "scan the fd array". They both seem like O(N) operations. You might be dividing the tests by 32 (or 64) but in a busy server with 3000 open sockets, what you really want is no scanning at all.
Anyway, your problem is already solved. You should check epoll:
http://epoll.hackerdojo.com/
It's been in the kernel for a while, now (with CONFIG_EPOLL=y).
-- Paulo Marques - www.grupopie.com
All that is necessary for the triumph of evil is that good men do nothing. Edmund Burke (1729 - 1797)
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |