The number of vectors to assign needs to be adjusted for each node such that it doesn't exceed the number of CPUs in that node. This patch recalculates the vector assignment per-node so that we don't try to assign more vectors than there are CPUs. When that previously happened, the cpus_per_vec was calculated to be 0, so many vectors had no CPUs assigned. This then goes on to fail to allocate descriptors due to empty masks, leading to an unoptimal spread.
Can you give a specific (numeric) example where this happens? I'm having a little trouble following the logical change here.

