Re: [BUG] /proc/<pid>/stat access stalls badly for swapping process, 2.4.0-test10

From: Mike Galbraith (mikeg@wen-online.de)
Date: Thu Nov 02 2000 - 02:19:06 EST


On Wed, 1 Nov 2000, Rik van Riel wrote:

> On Wed, 1 Nov 2000, David Mansfield wrote:
>
> > I'd like to report what seems like a performance problem in the latest
> > kernels. Actually, all recent kernels have exhibited this problem, but
> > I was waiting for the new VM stuff to stabilize before reporting it.
> >
> > My test is: run 7 processes that each allocate and randomly
> > access 32mb of ram (on a 256mb machine). Even though 7*32MB =
> > 224MB, this still sends the machine lightly into swap. The
> > machine continues to function fairly smoothly for the most part.
> > I can do filesystem operations, run new programs, move desktops
> > in X etc.
> >
> > Except: programs which access /proc/<pid>/stat stall for an
> > inderminate amount of time. For example, 'ps' and 'vmstat'
> > stall BADLY in these scenarios. I have had the stalls last over
> > a minute in higher VM pressure situations.
>
> I have one possible reason for this ....
>
> 1) the procfs process does (in fs/proc/array.c::proc_pid_stat)
> down(&mm->mmap_sem);
>
> 2) but, in order to do that, it has to wait until the process
> it is trying to stat has /finished/ its page fault, and is
> not into its next one ...
>
> 3) combine this with the elevator starvation stuff (ask Jens
> Axboe for blk-7 to alleviate this issue) and you have a
> scenario where processes using /proc/<pid>/stat have the
> possibility to block on multiple processes that are in the
> process of handling a page fault (but are being starved)

I'm experimenting with blk.[67] in test10 right now. The stalls
are not helped at all. It doesn't seem to become request bound
(haven't instrumented that yet to be sure) but the stalls persist.

        -Mike

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Tue Nov 07 2000 - 21:00:11 EST