From: Benjamin L. <bc...@re...> - 2001-09-13 00:58:46
|
On Wed, Sep 12, 2001 at 12:49:34PM -0700, Jonathan Lahr wrote: > Lock contention measurements using lockmeter indicate that block i/o > subsystem function __make_request is the primary source of io_request_lock > contention. > (see http://marc.theaimsgroup.com/?l=lse-tech&m=100017134609802&w=2) > My io_request_lock patch changes __make_request to use a per device queue > lock (q->queue_lock) instead of io_request_lock without reducing the > scope of other io_request_lock usage. Device drivers are not changed nor > are they required to change by that patch. My immediate suspicion is not that the lock itself is the problem, but that the insertion method used in the block request layer, combined with the large queue length is resulting in O(n^2) or worse behaviour. Of course, fixing that is even worse for stability. Keep in mind that the last time the request code was changed, it resulted in a subtle bug that wasn't corrected until ~2.4.8. -ben |