cvs commit: src/sys/kern vfs_bio.c

Jeff Roberson jroberson at chesapeake.net
Thu Jun 9 16:39:32 GMT 2005


On Thu, 9 Jun 2005, Alfred Perlstein wrote:

> MFC? :D

Yes, after a few weeks.

>
> * Jeff Roberson <jeff at FreeBSD.org> [050608 13:26] wrote:
> > jeff        2005-06-08 20:26:06 UTC
> >
> >   FreeBSD src repository
> >
> >   Modified files:
> >     sys/kern             vfs_bio.c
> >   Log:
> >    - Under heavy IO load the buf daemon can run for many hundereds of
> >      milliseconds due to what is essentially n^2 algorithmic complexity.  This
> >      change makes the algorithm N*2 instead.  This heavy processing manifested
> >      itself as skipping in audio and video playback due to the long scheduling
> >      latencies and contention on giant by pcm.
> >    - flushbufqueues() is now responsible for flushing multiple buffers
> >      rather than one at a time.  This allows us to save our progress in the
> >      list by using a sentinal.  We must do the numdirtywakeup() and
> >      waitrunningbufspace() here now rather than in buf_daemon().
> >    - Also add a uio_yield() after we have processed the list once for bufs
> >      without deps and again for bufs with deps.  This is to release Giant
> >      and allow any other giant locked code to proceed.
> >
> >   Tested by:      Many users on current@
> >   Revealed by:    schedgraph traces sent by Emil Mikulic & Anthony Ginepro
> >
> >   Revision  Changes    Path
> >   1.487     +28 -6     src/sys/kern/vfs_bio.c
>
> --
> - Alfred Perlstein
> - email: bright at mu.org cell: 408-480-4684
>


More information about the cvs-src mailing list