[PATCH v3 0/9] Introduce per-device completion queue pools

Sagi Grimberg sagi at grimberg.me
Mon Nov 20 04:26:51 PST 2017


>> The ULP is free to pass in an affinity hint to enforce locality to a
>> specific cpu core. Would that solve this issue?
> 
> Only for mlx5 adapters because only the mlx5 driver implements
> .get_vector_affinity(). For other adapters the following code is used to chose a
> vector:

Looks like even that will get reverted for 4.15 :)
Due to the change in user experience for managed irq vectors.

> 
>      vector = affinity_hint % dev->num_comp_vectors;
> 
> That means whether or not a single CQ will be used by different CPUs depends on
> how the ULP associates 'affinity_hint' with CPUs.

My intension was to pass it down to ib_alloc_cq and then convert
ib_cq_poll_work to run queue_work_on(cq->cpu, ib_comp_wq, &cq->work)

Note that you point out something that is more relevant to server/target
side ULPs (hence the assumption of workqueue mode).

So up until now I count Bart and Max on per-ULP pools, on the other
hand theres Christoph and I for per-device pools. Can we get a tie
breaker?



More information about the Linux-nvme mailing list