The particular Linux VM is used as build machine, and I guess
most of used ram was disk cache.
I can run it with lower RAM, for sure. I can also set vCPU
count to 1.
I will also try to run it without vhost (if I figure out
how to do that :).
Ok, I added:
<interface type='bridge'>
<driver name='qemu'/>
And VM starts without vhost now (I also rmmod
vhost/vhost_net, and they didn't get loaded back at VM start), has
1 CPU and 512 MB memory.
I had to also pin emulator threads (to pCPU 1 == 0x02
mask):
[root@jcpc includeOS] # virsh emulatorpin mirageOS 1
[root@jcpc includeOS] # virsh emulatorpin mirageOS
emulator: CPU Affinity
----------------------------------
*: 1
[root@jcpc includeOS] # virsh vcpuinfo mirageOS
VCPU: 0
CPU: 1
State: running
CPU time: 212.1s
CPU Affinity: -y------
[root@jcpc includeOS] # virsh iothreadinfo mirageOS
No IOThreads found for the domain
Result:
justin_cinkelj@jcpc:~$ taskset 0x04 iperf -c 192.168.122.20
-t10
------------------------------------------------------------
Client connecting to 192.168.122.20, TCP port 5001
TCP window size: 119 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.122.1 port 60196 connected with 192.168.122.20
port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 16.2 GBytes 13.9 Gbits/sec
top:
%Cpu0 : 1.0 us, 0.0 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi,
0.0 si, 0.0 st
%Cpu1 : 61.4 us, 38.6 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi,
0.0 si, 0.0 st
%Cpu2 : 0.0 us, 17.0 sy, 0.0 ni, 82.0 id, 0.0 wa, 1.0 hi,
0.0 si, 0.0 st
...
PID USER PR NI VIRT RES SHR S %CPU %MEM
TIME+
COMMAND
10172 qemu 20 0 5967952 695524 28268 R 100.0 2.1
7:47.57
qemu-system-x86
14303 justin_+ 20 0 165816 1848 1680 S 16.8 0.0
0:00.71 iperf
So Linux VM drops from 45 Gbit/s to 14 Gbit/s, but that is still
much higher that 2.4 Gbit/s.
More ideas what could I change?
Or maybe additional question. What number did other get with iperf
on MirageOS?
Takayuki, you are author of MirageOS iperf
implementation). What numbers would you expect?
Thank you
Justin
On 10/24/2017 04:08 PM, Takayuki
Imada wrote:
Justin,
Thanks for providing the information.
I would like to add the following information:
1. total CPU utilization (host + VM)
> 4401 qemu 20 0 6038648 2.309g 22968 S
100.0 7.4 43:24.27 qemu-system-x86
> 4422 root 20 0 0 0 0 R
83.2 0.0 0:22.90 vhost-4401
This indicates about 1.8 CPU cores were assigned for the
Linux VM iperf receiver.
> 24788 root 20 0 528708 16148 16064 R
100.0 0.0 0:04.35 ukvm-bin
On the other hand, the MirageOS iperf server was running
with just 1 CPU core in total.
2. Memory size assigned(used)
The above results indicate that the Linux VM was using
2.3G physical memory space,
but the MirageOS VM was running with 512MB physical
memory size(this size is fixed in Solo5/ukvm).
I guess that the above two points and networking
implementation difference between Linux and MirageOS affected
the performance difference you observed.
Kind regards,
|