Re: [PATCH RESEND 0/1] AHCI: Optimize interrupt processing

From: Alexander Gordeev
Date: Thu Sep 11 2014 - 08:43:08 EST


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-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/