On Wed, May 22, 2013 at 08:50:03AM +0900, Tejun Heo wrote: > Hmmmmmm..... I'd normally apply this patch but block layer is just > growing multi-queue support and libata is likely to be converted to mq > in foreseeable future, so I'm a bit hesitant to make irq handling more > sophiscated right now. Would you be interested in looking into > converting libata to blk mq support? I'm pretty sure it'd yield far > better outcome if done properly. Hi Tejun, As conversion of libata to blk mq has long done I tried the change against the recent version and the results still appear worthwhile. The numbers are taken by running 'dd if=/dev/sd{a,b} of=/dev/null' in parallel. All time values are in us. Before this update host lock average holdtime was 2.45 and average waittime was 1.24. After the update average holdtime dropped to 0.29 (about eight times) while average waittime decreased to 0.58 (about two times). Also, port events are handled with local interrupts enabled and compete on individual per-port locks with average holdtime 1.25 and average waittime 1.48. So combined average holdtime spent while holding host and port locks decreased from 2.45 to 0.29 + 1.25 = 1.54 (about 1.6 times). The downside of this change is introduction of a kernel thread. The upside is shorter access time to port locks and moving port interrupts handling out of the hardware interrupt context. Thanks! > -- > tejun -- Regards, Alexander Gordeev agordeev@xxxxxxxxxx -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html