Michal Suchanek, le Wed 19 Mar 2008 16:55:48 +0100, a écrit :
> On 19/03/2008, Samuel Thibault <[EMAIL PROTECTED]> wrote:
> > Yes, that's what I meant actually: the diskfs_sync_everything() function
> >  is able to trigger a lot of thread creations.
> >
> >  A way to have things work correctly would be by marking threads with a
> >  "level", i.e. diskfs_sync_everything runs at level 0, threads that it
> >  generates run at level 1, and threads that process their page faults run
> >  at level 2, etc.  Then we just need to limit the number of threads for a
> >  given level.  That should always permit termination of requests, while
> >  still limiting the number of thread to a constant times the maximum
> >  nesting of page faults.
> 
> How would you increase the level?

The kernel would have to transmit it from the page fault to the memory
object request.

> Would that mean that some initial process is level 1, login level 2, a
> user process started from top level shell level 3, from window manager
> level n >> 3?

No, it's not related to processes, but to threads servicing memory
object requests.

> Or does the level increase only when the thread goes through some page
> fault port?

The level doesn't really increase, it's just that the thread servicing a
page fault inherits the original thread's level plus one.

> How many levels can result from this?

The maximum nesting of page faults.

Samuel


Reply via email to