RE: [PATCH 1/1 linux-next] hpsa: remove set but unused variable rc

From: Elliott, Robert (Server Storage)
Date: Thu Oct 30 2014 - 02:30:46 EST




> -----Original Message-----
> From: linux-scsi-owner@xxxxxxxxxxxxxxx [mailto:linux-scsi-
> owner@xxxxxxxxxxxxxxx] On Behalf Of Sudip Mukherjee
> Sent: Thursday, October 30, 2014 12:55 AM
> To: Fabian Frederick
> Cc: linux-kernel@xxxxxxxxxxxxxxx; Stephen M. Cameron; James E.J.
> Bottomley; iss_storagedev@xxxxxx; linux-scsi@xxxxxxxxxxxxxxx
> Subject: Re: [PATCH 1/1 linux-next] hpsa: remove set but unused variable
> rc
>
> On Wed, Oct 29, 2014 at 04:15:04PM +0100, Fabian Frederick wrote:
> > Fix -Wunused-but-set-variable warning
>
> you should also mention why you have left the call to
> irq_set_affinity_hint().
> i am not sure , but it looks like irq_set_affinity_hint() is only
> checking if
> the lock is available or not. It is just locking ,then if lock is
> successfull then
> returning 0 or if lock fails then return -EINVAL, and unlocks before
> returnig.
> not doing anything else.
>
> thanks
> sudip

No, that function sets a mask value that shows up in
/proc/irq/nnn/affinity_hint
that a program like irqbalance may use to set the CPU affinity mask
for each irq via
/proc/irq/nnn/smp_affinity (bitmap format)
/proc/irq/nnn/smp_affinity_list (range format)

The reason is that in many cases, it is best when all these occur
on the same CPU that submitted the IO:
* LLD submission queues (if multiple are supported)
* LDD completion queues
* MSI-X interrupt indicating completion
* LLD completion interrupt handler
* block layer completion handler

Benefits include:
* cache efficiency - the data structures for the IO aren't
pulled from CPU to CPU.

* avoid IPI overhead in the block layer to get the completion
processed on the submitting CPU (which is done if using
rq_affinity=2 and the interrupt is routed to on another CPU).

* self-throttle the CPUs - avoid swamping one CPU with
completion processing for IOs submitted by many other CPUs
(which leads to stalls on the victim and timeouts on the
aggressors).

You must run irqbalance with an option to honor the hints;
some versions default to that, others don't. Or, disable
the irqbalance service and set them up the affinities
manually.


--
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/