Login
[x]
Log in using an account from:
Fedora Account System
Red Hat Associate
Red Hat Customer
Or login using a Red Hat Bugzilla account
Forgot Password
Login:
Hide Forgot
Create an Account
Red Hat Bugzilla – Attachment 314574 Details for
Bug 459527
Performance degradation due to excessive spinlocking in the block layer when using logical volume that spans too many physical volumes
[?]
New
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
|
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh83 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
This site requires JavaScript to be enabled to function correctly, please enable it.
[patch]
a patch for the problem
linux-2.6.18-optimize-generic_unplug_device.patch (text/plain), 1.61 KB, created by
Mikuláš Patočka
on 2008-08-19 21:07:48 UTC
(
hide
)
Description:
a patch for the problem
Filename:
MIME Type:
Creator:
Mikuláš Patočka
Created:
2008-08-19 21:07:48 UTC
Size:
1.61 KB
patch
obsolete
>Upstream commit: dbaf2c003e151ad9231778819b0977f95e20e06f (2.6.26-rc2) > >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). > > >diff -p -u -r linux-2.6.18.x86_64.p3/block/ll_rw_blk.c linux-2.6.18.x86_64/block/ll_rw_blk.c >--- linux-2.6.18.x86_64.p3/block/ll_rw_blk.c 2008-08-18 14:06:39.000000000 +0200 >+++ linux-2.6.18.x86_64/block/ll_rw_blk.c 2008-08-19 02:31:39.000000000 +0200 >@@ -1681,9 +1681,11 @@ EXPORT_SYMBOL(__generic_unplug_device); > **/ > void generic_unplug_device(request_queue_t *q) > { >- spin_lock_irq(q->queue_lock); >- __generic_unplug_device(q); >- spin_unlock_irq(q->queue_lock); >+ if (blk_queue_plugged(q)) { >+ spin_lock_irq(q->queue_lock); >+ __generic_unplug_device(q); >+ spin_unlock_irq(q->queue_lock); >+ } > } > EXPORT_SYMBOL(generic_unplug_device); >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 459527
: 314574