Hello,
On Tue, Oct 02, 2018 at 11:23:26AM -0700, Alexander Duyck wrote:
Yeah, it's all in wq_select_unbound_cpu(). Right now, if the
requested cpu isn't in wq_unbound_cpumask, it falls back to dumb
round-robin. We can probably do better there and find the nearest
node considering topology.
Well if we could get wq_select_unbound_cpu doing the right thing
based on node topology that would be most of my work solved right
there. Basically I could just pass WQ_CPU_UNBOUND with the correct
node and it would take care of getting to the right CPU.
Yeah, sth like that. It might be better to keep the function to take
cpu for consistency as everything else passes around cpu.
The question I have then is what should I do about workqueues that
aren't WQ_UNBOUND if they attempt to use queue_work_near? In that
Hmm... yeah, let's just use queue_work_on() for now. We can sort it
out later and users could already do that anyway.
So are you saying I should just return an error for now if somebody
tries to use something other than an unbound workqueue with
queue_work_near, and expect everyone else to just use queue_work_on
for the other workqueue types?
Oh, I meant that let's not add a new interface for now and just use
queue_work_on() for your use case too.
Thanks.