Drivers: hv: vmbus: Further improve CPU affiliation logic
Keep track of CPU affiliations of sub-channels within the scope of the primary channel. This will allow us to better distribute the load amongst available CPUs. Signed-off-by: Dexuan Cui <decui@microsoft.com> Signed-off-by: K. Y. Srinivasan <kys@microsoft.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
9f01ec5345
commit
3b71107d73
2 changed files with 19 additions and 2 deletions
|
@ -448,8 +448,24 @@ static void init_vp_index(struct vmbus_channel *channel, const uuid_le *type_gui
|
||||||
cpumask_xor(&available_mask, alloced_mask,
|
cpumask_xor(&available_mask, alloced_mask,
|
||||||
cpumask_of_node(primary->numa_node));
|
cpumask_of_node(primary->numa_node));
|
||||||
|
|
||||||
cur_cpu = cpumask_next(-1, &available_mask);
|
cur_cpu = -1;
|
||||||
cpumask_set_cpu(cur_cpu, alloced_mask);
|
while (true) {
|
||||||
|
cur_cpu = cpumask_next(cur_cpu, &available_mask);
|
||||||
|
if (cur_cpu >= nr_cpu_ids) {
|
||||||
|
cur_cpu = -1;
|
||||||
|
cpumask_copy(&available_mask,
|
||||||
|
cpumask_of_node(primary->numa_node));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!cpumask_test_cpu(cur_cpu,
|
||||||
|
&primary->alloced_cpus_in_node)) {
|
||||||
|
cpumask_set_cpu(cur_cpu,
|
||||||
|
&primary->alloced_cpus_in_node);
|
||||||
|
cpumask_set_cpu(cur_cpu, alloced_mask);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
channel->target_cpu = cur_cpu;
|
channel->target_cpu = cur_cpu;
|
||||||
channel->target_vp = hv_context.vp_index[cur_cpu];
|
channel->target_vp = hv_context.vp_index[cur_cpu];
|
||||||
|
|
|
@ -699,6 +699,7 @@ struct vmbus_channel {
|
||||||
/*
|
/*
|
||||||
* State to manage the CPU affiliation of channels.
|
* State to manage the CPU affiliation of channels.
|
||||||
*/
|
*/
|
||||||
|
struct cpumask alloced_cpus_in_node;
|
||||||
int numa_node;
|
int numa_node;
|
||||||
/*
|
/*
|
||||||
* Support for sub-channels. For high performance devices,
|
* Support for sub-channels. For high performance devices,
|
||||||
|
|
Loading…
Add table
Reference in a new issue