On 11.10.22 08:03, Markus Armbruster wrote:
David Hildenbrand <da...@redhat.com> writes:
Let's make it easier to pin threads created via a ThreadContext to
all CPUs currently belonging to a given set of NUMA nodes -- which is the
common case.
"node-affinity" is simply a shortcut for setting "cpu-affinity" manually
to the list of CPUs belonging to the set of nodes. This property can only
be written.
A simple QEMU example to set the CPU affinity to Node 1 on a system with
two NUMA nodes, 24 CPUs each:
qemu-system-x86_64 -S \
-object thread-context,id=tc1,node-affinity=1
And we can query the cpu-affinity via HMP/QMP:
(qemu) qom-get tc1 cpu-affinity
[
1,
3,
5,
7,
9,
11,
13,
15,
17,
19,
21,
23,
25,
27,
29,
31,
33,
35,
37,
39,
41,
43,
45,
47
]
Double-checking my understanding: on this system, the even CPUs belong
to NUMA node 0, and the odd ones to node 1. Setting node-affinity=1 is
therefore sugar for setting cpu-affinity to the set of even CPUs.
Correct?
Yes!
# lscpu
...
NUMA:
NUMA node(s): 2
NUMA node0 CPU(s):
0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46
NUMA node1 CPU(s):
1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47
We cannot query the node-affinity:
(qemu) qom-get tc1 node-affinity
Error: Insufficient permission to perform this operation
The error message is somewhat misleading. "Insufficient permission"
suggests this could work if I had more "permission". Not the case. The
message comes from object_property_get(), i.e. it's not this patch's
fault. I'll post a patch to improve it.
I agree, thanks!
--
Thanks,
David / dhildenb