mirror of
https://github.com/opnsense/src.git
synced 2026-06-10 17:22:46 -04:00
arm64: Include NUMA locality info in the CPU topology
The scheduler uses this topology to try and preserve locality when
migrating threads between CPUs and when performing work stealing.
Ensure that on NUMA systems it will at least take the NUMA topology into
account.
Reviewed by: mmel
Submitted by: Klara, Inc.
Sponsored by: Ampere Computing
Differential Revision: https://reviews.freebsd.org/D28579
(cherry picked from commit 17d0f830dd)
This commit is contained in:
parent
0486986ad8
commit
e2c9871f6a
1 changed files with 28 additions and 1 deletions
|
|
@ -437,8 +437,35 @@ ipi_stop(void *dummy __unused)
|
|||
struct cpu_group *
|
||||
cpu_topo(void)
|
||||
{
|
||||
struct cpu_group *dom, *root;
|
||||
int i;
|
||||
|
||||
return (smp_topo_none());
|
||||
root = smp_topo_alloc(1);
|
||||
dom = smp_topo_alloc(vm_ndomains);
|
||||
|
||||
root->cg_parent = NULL;
|
||||
root->cg_child = dom;
|
||||
CPU_COPY(&all_cpus, &root->cg_mask);
|
||||
root->cg_count = mp_ncpus;
|
||||
root->cg_children = vm_ndomains;
|
||||
root->cg_level = CG_SHARE_NONE;
|
||||
root->cg_flags = 0;
|
||||
|
||||
/*
|
||||
* Redundant layers will be collapsed by the caller so we don't need a
|
||||
* special case for a single domain.
|
||||
*/
|
||||
for (i = 0; i < vm_ndomains; i++, dom++) {
|
||||
dom->cg_parent = root;
|
||||
dom->cg_child = NULL;
|
||||
CPU_COPY(&cpuset_domain[i], &dom->cg_mask);
|
||||
dom->cg_count = CPU_COUNT(&dom->cg_mask);
|
||||
dom->cg_children = 0;
|
||||
dom->cg_level = CG_SHARE_L3;
|
||||
dom->cg_flags = 0;
|
||||
}
|
||||
|
||||
return (root);
|
||||
}
|
||||
|
||||
/* Determine if we running MP machine */
|
||||
|
|
|
|||
Loading…
Reference in a new issue