-
Bug
-
Resolution: Not a Bug
-
Normal
-
None
-
Quality / Stability / Reliability
-
5
-
False
-
-
False
-
CLOSED
-
-
CNV Virtualization Sprint 243, CNV Virtualization Sprint 244, CNV Virtualization Sprint 245, CNV Virtualization Sprint 246
-
Moderate
-
No
Description of problem:
Using IOThreads gives better performance for virtio based disks. Ideally the IOThread is bound to a specific CPU and stays on that CPU. In the current implementation there is one CPU specified automatically, but looking on which CPU the IOThreads are running on shows that this setting is not taken into account. Additionally when using multiple IOThreads, one would like to specify more then one CPU (one CPU per IOThread).
Version-Release number of selected component (if applicable):
$ oc version
Client Version: 4.10.45
Server Version: 4.10.45
How reproducible:
Using a VM with the attached configuration and looking at which CPUs the actual IOThreads are running on when the guest does it's IO.
The domxml for the VM specifies:
<emulatorpin cpuset='25'/>
<iothreadpin iothread='1' cpuset='25'/>
but looking where the IOThreads run, shows that it's only IOThread 1 that is using that pinning, the others can use almost all CPUs:
- ps -T -p 832716
PID SPID TTY TIME CMD
832716 832716 ? 00:00:10 qemu-kvm
832716 832724 ? 00:00:00 IO iothread1
832716 832725 ? 00:00:01 IO iothread2
832716 832726 ? 00:01:18 IO iothread3
832716 832727 ? 00:02:33 IO iothread4
832716 832728 ? 00:00:05 IO iothread5
- taskset -cp 832724
pid 832724's current affinity list: 25
[root@worker-0 tools]# taskset -cp 832725
pid 832725's current affinity list: 1-25,28-111,113-136,140-223
[root@worker-0 tools]# taskset -cp 832726
pid 832726's current affinity list: 1-25,28-111,113-136,140-223
[root@worker-0 tools]# taskset -cp 832727
pid 832727's current affinity list: 1-25,28-111,113-136,140-223
[root@worker-0 tools]# taskset -cp 832728
pid 832728's current affinity list: 1-25,28-111,113-136,140-223
Expected results:
The IOthreads should run on the CPU defined in the domain.xml.
Additional info:
Ideally, the CPUs for the emulator pin can be specified in the VM.yml. This is important since you would want those threads to be on the NUMA socket where also the storage controller is located.
- external trackers
- links to
-
RHEA-2023:116760
OpenShift Virtualization 4.15.0 Images