Re: [RFC PATCH v2 3/5] padata: dispatch works on different nodes

From: Tim Chen
Date: Tue Dec 12 2023 - 18:40:25 EST



>
> list_for_each_entry(pw, &works, pw_list)
> - queue_work(system_unbound_wq, &pw->pw_work);
> + if (job->numa_aware)
> + queue_work_node((++nid % num_node_state(N_MEMORY)),

The nid may fall on a NUMA node with only memory but no CPU. In that case you
may still put the work on the unbound queue. You could end up on one CPU node for work
from all memory nodes without CPU. Is this what you want? Or you would
like to spread them between CPU nodes?

Tim

> + system_unbound_wq, &pw->pw_work);
> + else
> + queue_work(system_unbound_wq, &pw->pw_work);
>
> /* Use the current thread, which saves starting a workqueue worker. */
> padata_work_init(&my_work, padata_mt_helper, &ps, PADATA_WORK_ONSTACK);