Re: [patch 00/13] Syslets, "Threadlets", generic AIO support, v3

Evgeniy Polyakov
2007-02-23T12:26:05Z

On Fri, Feb 23, 2007 at 12:51:52PM +0100, Ingo Molnar (mingo@elte.hu) wrote:
> > [...] Those 20k blocked requests were created in about 20 seconds, so
> > roughly saying we have 1k of thread creation/freeing per second - do
> > we want this?
>
> i'm not sure why you mention thread creation and freeing. The
> syslet/threadlet code reuses already created async threads, and that is
> visible all around in both the kernel-space and in the user-space
> syslet/threadlet code.
>
> While Linux creates+destroys threads pretty damn fast (in about 10-15
> usecs - which is roughly the cost of getting a single 1-byte packet
> through a TCP socket from one process to another, on localhost), still
> we dont want to create and destroy a thread per request.

I meant that we end up with having one thread per IO - they were
preallocated, but that does not matter. And what about your idea of
switching userspace threads to cachemiss threads?

My main concern was only about the situation, when we ends up with truly
bloking context (like network), and this results in having thousands of
threads doing the work - even having most of them sleeping, there is a
problem with memory overhead and context switching, although it is usable
situation, but when all of them are ready immediately - context switching
will kill a machine even with O(1) scheduler which made situation damn
better than before, but it is not a cure for the problem.

> Ingo

--
Evgeniy Polyakov