On 08/05/24 22:54, MANISH PANDEY wrote:
quoted
quoted
If no matching is required, it makes sense to set rq_affinity to 0. When
matching is enabled, we need to rely on per-task iowait boost to help the
requester to run at a bigger CPU, and naturally the completion will follow when
rq_affinity=1. If the requester doesn't need the big perf, but the irq
triggered on a bigger core, I struggle to understand why it is good for
completion to run on bigger core without the requester also being on a similar
bigger core to truly maximize perf.
Not all the SoCs implements L3 as shared LLC. There are SoCs with L2 as LLC
and not shared among all CPU clusters. So in this case, if we use rq=0, this
would force to use a CPU, which doesn't shares L2 cache.
Say in a system cpu[0-5] shares L2 as LLC and cpu[6-7] shares L2 as LLC,
then any request from CPU[0-5] / CPU[6-7] would force to serve IRQ on CPUs
which actually doesn't shares cache, would would result low performance.
For these systems rq_affinity=1 is what you want? the rq_affinity is not
supposed to be one size fits all. We wouldn't have different rq_affinity values
if one is supposed to work on all systems.