From b0eaa32dce87ccb8749b227066b26ae9bc66cace Mon Sep 17 00:00:00 2001 From: pmikus Date: Tue, 15 Nov 2016 14:47:38 +0100 Subject: CSIT-470 Add option to configure CFS scheduler priority for QEMU Add option to configure CFS scheduler priority for QEMU Change-Id: I76da7f536e70a23a57cf5215ab60002f95532b19 Signed-off-by: pmikus --- resources/libraries/python/QemuUtils.py | 16 ++++++++++++++++ resources/libraries/robot/performance.robot | 3 +++ 2 files changed, 19 insertions(+) diff --git a/resources/libraries/python/QemuUtils.py b/resources/libraries/python/QemuUtils.py index 76f86063e2..cfdbc7ffa4 100644 --- a/resources/libraries/python/QemuUtils.py +++ b/resources/libraries/python/QemuUtils.py @@ -149,6 +149,22 @@ class QemuUtils(object): raise RuntimeError('Set affinity failed on {0}'.format( self._node['host'])) + def qemu_set_scheduler_policy(self): + """Set scheduler policy to SCHED_RR with priority 1 for all Qemu CPU + processes. + + :raises RuntimeError: Set scheduler policy failed. + """ + qemu_cpus = self._qemu_qmp_exec('query-cpus')['return'] + + for qemu_cpu in qemu_cpus: + cmd = 'chrt -r -p 1 {0}'.format(qemu_cpu['thread_id']) + (ret_code, _, stderr) = self._ssh.exec_command_sudo(cmd) + if int(ret_code) != 0: + logger.debug('Set SCHED_RR failed {0}'.format(stderr)) + raise RuntimeError('Set SCHED_RR failed on {0}'.format( + self._node['host'])) + def qemu_set_node(self, node): """Set node to run QEMU on. diff --git a/resources/libraries/robot/performance.robot b/resources/libraries/robot/performance.robot index c33e9f3192..28f02f9123 100644 --- a/resources/libraries/robot/performance.robot +++ b/resources/libraries/robot/performance.robot @@ -1195,6 +1195,7 @@ | | Run keyword | ${vm_name}.Qemu Set Disk Image | ${glob_vm_image} | | ${vm}= | Run keyword | ${vm_name}.Qemu Start | | Run keyword | ${vm_name}.Qemu Set Affinity | 5 | 6 | 7 +| | Run keyword | ${vm_name}.Qemu Set Scheduler Policy | | Dpdk Testpmd Start | ${vm} | eal_coremask=0x7 | | ... | eal_mem_channels=4 | | ... | pmd_fwd_mode=io @@ -1236,6 +1237,7 @@ | | Run keyword | ${vm_name}.Qemu Set Disk Image | ${glob_vm_image} | | ${vm}= | Run keyword | ${vm_name}.Qemu Start | | Run keyword | ${vm_name}.Qemu Set Affinity | 5 | 6 | 7 +| | Run keyword | ${vm_name}.Qemu Set Scheduler Policy | | Dpdk Testpmd Start | ${vm} | eal_coremask=0x7 | | ... | eal_mem_channels=4 | | ... | pmd_fwd_mode=mac @@ -1272,6 +1274,7 @@ | | Run keyword | ${vm_name}.Qemu Set Disk Image | ${glob_vm_image} | | ${vm}= | Run keyword | ${vm_name}.Qemu Start | | Run keyword | ${vm_name}.Qemu Set Affinity | 5 | 6 | 7 +| | Run keyword | ${vm_name}.Qemu Set Scheduler Policy | | ${br}= | Set Variable | br0 | | ${vhost1}= | Get Vhost User If Name By Sock | ${vm} | ${sock1} | | ${vhost2}= | Get Vhost User If Name By Sock | ${vm} | ${sock2} -- cgit 1.2.3-korg