Uploaded image for project: 'OpenShift Virtualization'
  1. OpenShift Virtualization
  2. CNV-23524

[2155612] IOThreads are not bound to CPUs, nor there are enough CPUs allocated

XMLWordPrintable

    • 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:

      1. 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
      1. 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.

              sgott@redhat.com Stuart Gott
              nilskoenigrh Nils Koenig
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated:
                Resolved: