login
Login
/
Register
Search
Forums
News
Blogs
Features
Site
Home
»
Mailing list archives
»
linux-kernel
»
2008
»
April
»
29
Re: [PATCH] Optimize lock in queue unplugging
view
thread
!MAILaRCHIVE_VOTE_RePLACE
Previous message: [
thread
] [
date
] [
author
]
Next message: [thread] [
date
] [
author
]
[view in full thread]
From:
Jens Axboe <jens.axboe@...>
To: Mikulas Patocka <mpatocka@...>
Cc: <linux-kernel@...>, Mike Anderson <andmike@...>, Alasdair Graeme Kergon <agk@...>
Subject:
Re: [PATCH] Optimize lock in queue unplugging
Date: Tuesday, April 29, 2008 - 4:05 pm
On Tue, Apr 29 2008, Mikulas Patocka wrote:
quoted text
> > > On Tue, 29 Apr 2008, Jens Axboe wrote: > > >On Tue, Apr 29 2008, Mikulas Patocka wrote: > >>Hi > >> > >>Mike Anderson was doing an OLTP benchmark on a computer with 48 physical > >>disks mapped to one logical device via device mapper. > >> > >>He found that there was a slowdown on request_queue->lock in function > >>generic_unplug_device. The slowdown is caused by the fact that when some > >>code calls unplug on the device mapper, device mapper calls unplug on all > >>physical disks. These unplug calls take the lock, find that the queue is > >>already unplugged, release the lock and exit. > >> > >>With the below patch, performance of the benchmark was increased by 18% > >>(the whole OLTP application, not just block layer microbenchmarks). > >> > >>So I'm submitting this patch for upstream. I think the patch is correct, > >>because when more threads call simultaneously plug and unplug, it is > >>unspecified, if the queue is or isn't plugged (so the patch can't make > >>this worse). And the caller that plugged the queue should unplug it > >>anyway. (if it doesn't, there's 3ms timeout). > > > >Where were these unplug calls coming from? The block layer will > >generally only unplug when it is already unplugged, so if you are seeing > >so many unplug calls that the patch redues overhead by as much > >described, perhaps the callsite is buggy? > > > >-- > >Jens Axboe > > unplug is called on any wait_on_buffer (and similar calls) > __wait_on_buffer -> sync_buffer -> blk_run_address_space -> > blk_run_backing_dev -> bdi->unplug_io_fn(bdi, page); > > (I'm not sure that this was the IBM's case, I'm just guessing - this is > the most obvious example where unplug is called repeatedly) > > > There is not any test that the queue is plugged and there shouldn't be. If > you have this situation > > dm-linear(unplugged) -> physical-disk(plugged) > > then uplung should be called on dm-linear (that will call dm-unplug method > dm_unplug_all and that will unplug the disk). If you add the test of > plugged queue to the upper layer, you mess this situation with stacked > drivers completely. > > The test for already plugged queue should be at the lowest physical device > driver, not in upper layers.
Fair enough, I'll put the patch under closer scrutiny and queue it up. Thanks! -- Jens Axboe --
unsubscribe notice
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to
majordomo@vger.kernel.org
More majordomo info at
http://vger.kernel.org/majordomo-info.html
Please read the FAQ at
http://www.tux.org/lkml/
Previous message: [
thread
] [
date
] [
author
]
Next message: [thread] [
date
] [
author
]
Messages in current thread:
[PATCH] Optimize lock in queue unplugging
, Mikulas Patocka
, (Tue Apr 29, 3:12 pm)
Re: [PATCH] Optimize lock in queue unplugging
, Jens Axboe
, (Tue Apr 29, 3:25 pm)
Re: [PATCH] Optimize lock in queue unplugging
, Mike Anderson
, (Tue Apr 29, 4:29 pm)
Re: [PATCH] Optimize lock in queue unplugging
, Jens Axboe
, (Wed Apr 30, 3:14 am)
Re: [PATCH] Optimize lock in queue unplugging
, Mikulas Patocka
, (Wed Apr 30, 9:54 am)
Re: [PATCH] Optimize lock in queue unplugging
, Jens Axboe
, (Sun May 4, 3:11 pm)
Re: [PATCH] Optimize lock in queue unplugging
, Mikulas Patocka
, (Mon May 5, 12:01 am)
Re: [PATCH] Optimize lock in queue unplugging
, Jens Axboe
, (Wed May 7, 3:45 am)
Re: [PATCH] Optimize lock in queue unplugging
, Alasdair G Kergon
, (Wed Apr 30, 6:38 am)
Re: [PATCH] Optimize lock in queue unplugging
, Mikulas Patocka
, (Tue Apr 29, 4:02 pm)
Re: [PATCH] Optimize lock in queue unplugging
, Jens Axboe
, (Tue Apr 29, 4:05 pm)
Navigation
Create content
Mailing list archives
Recent posts
Popular discussions
linux-kernel
:
Bart Van Assche
Integration of SCST in the mainstream Linux kernel
Kamalesh Babulal
[BUG] Linux 2.6.25-rc2 - Kernel Ooops while running dbench
Greg Kroah-Hartman
[PATCH 005/196] Chinese: add translation of SubmittingDrivers
Paul Jackson
Re: cpuset-remove-sched-domain-hooks-from-cpusets
git
:
linux-netdev
:
Gerrit Renker
[PATCH 0/37] dccp: Feature negotiation - last call for comments
Jarek Poplawski
[PATCH] pkt_sched: Destroy gen estimators under rtnl_lock().
Steven Rostedt
Re: -rt scheduling: wakeup bug?
David Miller
Re: [GIT]: Networking
openbsd-misc
:
Colocation donated by:
Who's online
There are currently
10 users
and
1049 guests
online.
Online users
zeekec
trusten
rockytherobott
trabajornet
aluminiumwindo
teethwhitening
shoppingonline
alabamajailsvna
prosperityrisi
privateinveswnh
Syndicate