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