>> Long story short, management application has no way of learning >> TIDs of allocator threads so it can't make them run NUMA aware. > > This feels like the key issue. The preallocation threads are > invisible to libvirt, regardless of whether we're doing coldplug > or hotplug of memory-backends. Indeed the threads are invisible > to all of QEMU, except the memory backend code. > > Conceptually we need 1 or more explicit worker threads, that we > can assign CPU affinity to, and then QEMU can place jobs on them. > I/O threads serve this role, but limited to blockdev work. We > need a generalization of I/O threads, for arbitrary jobs that > QEMU might want to farm out to specific numa nodes.
At least the "-object iothread" thingy can already be used for actions outside of blockdev. virtio-balloon uses one for free page hinting. -- Thanks, David / dhildenb