On Tue, Feb 27, 2007 at 07:24:19AM +0100, Ingo Molnar ([EMAIL PROTECTED]) wrote: > > * Evgeniy Polyakov <[EMAIL PROTECTED]> wrote: > > > On Mon, Feb 26, 2007 at 01:51:23PM +0100, Ingo Molnar ([EMAIL PROTECTED]) > > wrote: > > > > > > * Evgeniy Polyakov <[EMAIL PROTECTED]> wrote: > > > > > > > Even having main dispatcher as epoll/kevent loop, the _whole_ > > > > threadlet model is absolutely micro-thread in nature and not state > > > > machine/event. > > > > > > Evgeniy, i'm not sure how many different ways to tell this to you, but > > > you are not listening, you are not learning and you are still not > > > getting it at all. > > > > > > The scheduler /IS/ a generic work/event queue. And it's pretty damn > > > fast. No amount of badmouthing will change that basic fact. Not exactly > > > as fast as a special-purpose queueing system (for all the reasons i > > > outlined to you, and which you ignored), but it gets pretty damn close > > > even for the web workload /you/ identified, and offers a user-space > > > programming model that is about 1000 times more useful than > > > state-machines. > > > > Meanwhile on practiceal side: > > via epia kevent/epoll/threadlet: > > > > client: ab -c500 -n5000 $url > > > > kevent: 849.72 > > epoll: 538.16 > > threadlet: > > gcc ./evserver_epoll_threadlet.c -o ./evserver_epoll_threadlet > > In file included from ./evserver_epoll_threadlet.c:30: > > ./threadlet.h: In function ‘threadlet_exec’: > > ./threadlet.h:46: error: can't find a register in class ‘GENERAL_REGS’ > > while reloading ‘asm’ > > > > That particular asm optimization fails to compile. > > it's not really an asm optimization but an API glue. I'm using: > > gcc -O2 -g -Wall -o evserver_epoll_threadlet evserver_epoll_threadlet.c > -fomit-frame-pointer > > does that work for you?
Yes, -fomit-frame-point make the deal. In average, threadlet runs as fast as epoll. Just because there are _no_ rescheduling in that case. I added a printk into __async_schedule() and started ab -c7000 -n20000 http://192.168.4.80/ against slow via epia, and got only one of them. Client is latest ../async-test-v4/evserver_epoll_threadlet Btw, I need to admit, that I have totally broken kevent tree there - it does not work on that machine on higher loads, so I'm investigating that problem now. > Ingo -- Evgeniy Polyakov - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/