Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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