From: Satheesh Rajendran <[email protected]> vcpupin(): function to pin the vcpu to cpu get_vcpus_pid(): function get the vcpu pid virsh_qemu_monitor_command(): implements virsh qemu-monitor-command virsh_vcpupin(): implements virsh vcpupin command virsh_vcpuinfo(): implements virsh vcpuinfo command virsh_vcpucount_live(): implements vcpucount command
Signed-off-by: Satheesh Rajendran <[email protected]> --- client/virt/libvirt_vm.py | 61 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/client/virt/libvirt_vm.py b/client/virt/libvirt_vm.py index 25a403b..af9266f 100644 --- a/client/virt/libvirt_vm.py +++ b/client/virt/libvirt_vm.py @@ -116,6 +116,47 @@ def virsh_cmd(cmd, uri="", ignore_status=False, print_info=False): return ret +def virsh_qemu_monitor_command(domname,command,uri="",ignore_status=False,print_info=False): + """ + This helps to execute the qemu monitor command through virsh command. + """ + + cmd_qemu_monitor = "qemu-monitor-command %s --hmp \'%s\'" % (domname,command) + return virsh_cmd(cmd_qemu_monitor,uri,ignore_status,print_info) + + +def virsh_vcpupin(domname,vcpu,cpu,uri="",ignore_status=False,print_info=False): + """ + Changes the cpu affinity for respective vcpu. + """ + + try: + cmd_vcpupin = "vcpupin %s %s %s" % (domname,vcpu,cpu) + virsh_cmd(cmd_vcpupin,uri,ignore_status,print_info) + + except error.CmdError, detail: + logging.error("Virsh vcpupin VM %s failed:\n%s", domname, detail) + return False + + +def virsh_vcpuinfo(domname,uri="",ignore_status=False,print_info=False): + """ + Prints the vcpuinfo of a given domain. + """ + + cmd_vcpuinfo = "vcpuinfo %s" % domname + return virsh_cmd(cmd_vcpuinfo,uri,ignore_status,print_info).stdout.strip() + + +def virsh_vcpucount_live(domname,uri="",ignore_status=False,print_info=False): + """ + Prints the vcpucount of a given domain. + """ + + cmd_vcpucount = "vcpucount --live --active %s" % domname + return virsh_cmd(cmd_vcpucount,uri,ignore_status,print_info).stdout.strip() + + def virsh_freecell(uri = "", ignore_status=False, extra = ""): """ Prints the available amount of memory on the machine or within a NUMA cell. @@ -1564,6 +1605,19 @@ class VM(virt_vm.BaseVM): return pid + def get_vcpus_pid(self): + """ + Return the vcpu's pid for a given VM. + + @return: list of PID of vcpus of a VM. + """ + + vcpu_pids = [] + output = virsh_qemu_monitor_command(self.name,"info cpus") + vcpu_pids = re.findall(r'thread_id=(\d+)', output.stdout) + return vcpu_pids + + def get_shell_pid(self): """ Return the PID of the parent shell process. @@ -1746,3 +1800,10 @@ class VM(virt_vm.BaseVM): Override BaseVM restore_from_file method """ virsh_restore(self.name, path, uri=self.connect_uri) + + + def vcpupin(self,vcpu,cpu): + """ + To pin vcpu to cpu + """ + virsh_vcpupin(self.name,vcpu,cpu) -- 1.7.10.4 _______________________________________________ Autotest-kernel mailing list [email protected] https://www.redhat.com/mailman/listinfo/autotest-kernel
