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


Reply via email to