cvs commit: src/sys/kern vfs_bio.c

Alfred Perlstein alfred at freebsd.org
Thu Jun 9 13:54:39 GMT 2005


MFC? :D

* 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