Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 9 Jun 2005 06:54:38 -0700
From:      Alfred Perlstein <alfred@freebsd.org>
To:        Jeff Roberson <jeff@FreeBSD.org>
Cc:        cvs-src@FreeBSD.org, src-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   Re: cvs commit: src/sys/kern vfs_bio.c
Message-ID:  <20050609135438.GS17867@elvis.mu.org>
In-Reply-To: <200506082026.j58KQ6cT052316@repoman.freebsd.org>
References:  <200506082026.j58KQ6cT052316@repoman.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
MFC? :D

* Jeff Roberson <jeff@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@mu.org cell: 408-480-4684



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050609135438.GS17867>