On 08/05/24 22:54, MANISH PANDEY wrote: > > > 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.