...
Core 10 and 11 were isolated from the OS using the isolcpus argument to grub command line and using virsh to Pin the vCPUs to those cores (Requires KVM acceleration):
Code Block |
---|
$ virsh vcpupin test 0 10 $ virsh vcpupin test 1 11 |
To check for KVM acceleration see that the response to the command below is > 0:
Code Block |
---|
$ cat /proc/cpuinfo | egrep -c '(vmx|svm)' |
without KVM acceleration you will need to taskset the qemu threads to the isolated cores:
Code Block |
---|
$ grep pid /var/run/libvirt/qemu/test.xml
<domstatus state='running' pid='4907'>
$ grep Cpus_allowed_list /proc/4907/task/*/status
/proc/4907/task/4916/status:Cpus_allowed_list: 4
/proc/4907/task/4917/status:Cpus_allowed_list: 5
/proc/4907/task/4918/status:Cpus_allowed_list: 6
/proc/4907/task/4919/status:Cpus_allowed_list: 7
</section> |
To taskset the process + tasks repeat the following for the PID and the subtasks:
Code Block |
---|
$ taskset -pc 4 4907... |
Guest
OS: Ubuntu 16.04.2 LTS
Install collectd and stress
Code Block |
---|
$ sudo apt install collectd stress stress-ng |
configure /etc/collectd/collectd.conf
Code Block |
---|
Hostname "ubuntu_vm" <LoadPlugin cpu> Interval 1 </LoadPlugin> LoadPlugin network <Plugin cpu> ReportByCpu true ReportByState false ValuesPercentage false </Plugin> <Plugin network> # # client setup: Server "<HOST IP>" "28597" <Server "<HOST IP>" "28597"> </Server> </Plugin> |
Start collectd on the host and the guest
Code Block |
---|
$ service collectd start |
Run Stress in the VM on a single core
Code Block |
---|
$ taskset 1 stress -c 2 -t 10
stress: info: [1422] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd
stress: info: [1422] successful run completed in 10s
|