Hello Jens,
Thank You for the reply.
-
I run the test from the virtual server which is the only virtual machine on the ESXi host.
-
To test the reponsiveness, I use regular ping. The target is a physical host on the local network which is not under loaded at all.
-
I created a basic shell script to simulate the load of the application:
infiniteloop.sh
[FONT=Arial Narrow]#!/bin/bash
for (( ; ; ))
do
echo “Pres CTRL+C to stop…”
int=int+1
done[/FONT]
I start this script once, then it loads one vcpu on ~100%.
My test is the following:
- examine the current system load, it must be idle
- start ping a host on the network, the response time must be under 0.5ms
- start infiniteloop.sh
- examine ping response time
- stop infiniteloop.sh
- examine ping response time
Here is the output of my test:
@07:34:28 sapv-prd-as31:~ # ping 192.168.244.56
PING 192.168.244.56 (192.168.244.56) 56(84) bytes of data.
64 bytes from 192.168.244.56: icmp_seq=1 ttl=64 time=0.299 ms
64 bytes from 192.168.244.56: icmp_seq=2 ttl=64 time=0.297 ms
64 bytes from 192.168.244.56: icmp_seq=3 ttl=64 time=0.299 ms
64 bytes from 192.168.244.56: icmp_seq=4 ttl=64 time=0.247 ms
64 bytes from 192.168.244.56: icmp_seq=5 ttl=64 time=0.282 ms
64 bytes from 192.168.244.56: icmp_seq=6 ttl=64 time=0.264 ms
64 bytes from 192.168.244.56: icmp_seq=7 ttl=64 time=0.292 ms
64 bytes from 192.168.244.56: icmp_seq=8 ttl=64 time=0.296 ms
64 bytes from 192.168.244.56: icmp_seq=9 ttl=64 time=0.257 ms
64 bytes from 192.168.244.56: icmp_seq=10 ttl=64 time=0.281 ms
64 bytes from 192.168.244.56: icmp_seq=11 ttl=64 time=0.263 ms
64 bytes from 192.168.244.56: icmp_seq=12 ttl=64 time=0.304 ms
64 bytes from 192.168.244.56: icmp_seq=13 ttl=64 time=0.234 ms
64 bytes from 192.168.244.56: icmp_seq=14 ttl=64 time=0.275 ms
64 bytes from 192.168.244.56: icmp_seq=15 ttl=64 time=0.305 ms
64 bytes from 192.168.244.56: icmp_seq=16 ttl=64 time=0.263 ms
64 bytes from 192.168.244.56: icmp_seq=17 ttl=64 time=5.45 ms ← Here I started the infiniteloop.sh
64 bytes from 192.168.244.56: icmp_seq=18 ttl=64 time=5.99 ms
64 bytes from 192.168.244.56: icmp_seq=19 ttl=64 time=5.00 ms
64 bytes from 192.168.244.56: icmp_seq=20 ttl=64 time=8.37 ms
64 bytes from 192.168.244.56: icmp_seq=21 ttl=64 time=2.58 ms
64 bytes from 192.168.244.56: icmp_seq=22 ttl=64 time=6.97 ms
64 bytes from 192.168.244.56: icmp_seq=23 ttl=64 time=9.99 ms
64 bytes from 192.168.244.56: icmp_seq=24 ttl=64 time=8.99 ms
64 bytes from 192.168.244.56: icmp_seq=25 ttl=64 time=7.99 ms
64 bytes from 192.168.244.56: icmp_seq=26 ttl=64 time=7.00 ms
64 bytes from 192.168.244.56: icmp_seq=27 ttl=64 time=8.02 ms
64 bytes from 192.168.244.56: icmp_seq=28 ttl=64 time=6.94 ms
64 bytes from 192.168.244.56: icmp_seq=29 ttl=64 time=6.97 ms
64 bytes from 192.168.244.56: icmp_seq=30 ttl=64 time=6.00 ms
64 bytes from 192.168.244.56: icmp_seq=31 ttl=64 time=3.34 ms
64 bytes from 192.168.244.56: icmp_seq=32 ttl=64 time=7.62 ms
64 bytes from 192.168.244.56: icmp_seq=33 ttl=64 time=5.99 ms
64 bytes from 192.168.244.56: icmp_seq=34 ttl=64 time=7.01 ms
64 bytes from 192.168.244.56: icmp_seq=35 ttl=64 time=5.98 ms
64 bytes from 192.168.244.56: icmp_seq=36 ttl=64 time=4.99 ms
64 bytes from 192.168.244.56: icmp_seq=37 ttl=64 time=3.97 ms
64 bytes from 192.168.244.56: icmp_seq=38 ttl=64 time=3.00 ms
64 bytes from 192.168.244.56: icmp_seq=39 ttl=64 time=6.42 ms
64 bytes from 192.168.244.56: icmp_seq=40 ttl=64 time=5.56 ms
64 bytes from 192.168.244.56: icmp_seq=41 ttl=64 time=8.97 ms
64 bytes from 192.168.244.56: icmp_seq=42 ttl=64 time=8.00 ms
64 bytes from 192.168.244.56: icmp_seq=43 ttl=64 time=5.47 ms ← Here I stopped the infiniteloop.sh
64 bytes from 192.168.244.56: icmp_seq=44 ttl=64 time=0.261 ms
64 bytes from 192.168.244.56: icmp_seq=45 ttl=64 time=0.260 ms
64 bytes from 192.168.244.56: icmp_seq=46 ttl=64 time=0.224 ms
64 bytes from 192.168.244.56: icmp_seq=47 ttl=64 time=0.256 ms
64 bytes from 192.168.244.56: icmp_seq=48 ttl=64 time=0.255 ms
64 bytes from 192.168.244.56: icmp_seq=49 ttl=64 time=0.248 ms
64 bytes from 192.168.244.56: icmp_seq=50 ttl=64 time=0.234 ms
64 bytes from 192.168.244.56: icmp_seq=51 ttl=64 time=0.272 ms
64 bytes from 192.168.244.56: icmp_seq=52 ttl=64 time=0.304 ms
64 bytes from 192.168.244.56: icmp_seq=53 ttl=64 time=0.254 ms
64 bytes from 192.168.244.56: icmp_seq=54 ttl=64 time=0.248 ms
64 bytes from 192.168.244.56: icmp_seq=55 ttl=64 time=0.241 ms
^C
— 192.168.244.56 ping statistics —
55 packets transmitted, 55 received, 0% packet loss, time 54031ms
rtt min/avg/max/mdev = 0.224/3.276/9.995/3.318 ms
Here is the output of top during the slow period:
top - 07:44:38 up 16:50, 7 users, load average: 2.61, 2.26, 1.97
Tasks: 182 total, 2 running, 180 sleeping, 0 stopped, 0 zombie
Cpu0 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu1 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu2 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu3 : 98.0%us, 2.0%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu4 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu5 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu6 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu7 : 0.5%us, 0.5%sy, 0.0%ni, 99.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 40257M total, 1588M used, 38668M free, 83M buffers
Swap: 67036M total, 0M used, 67036M free, 586M cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7814 root 20 0 11584 1368 1116 R 100 0.0 0:17.44 infiniteloop.sh
6283 root 20 0 8924 1188 832 S 1 0.0 16:03.07 top
1968 root 20 0 85472 4380 3528 S 0 0.0 0:37.20 vmtoolsd
6229 root 20 0 175m 19m 10m S 0 0.0 3:22.96 gnome-terminal
7648 root 20 0 8924 1196 832 R 0 0.0 0:03.72 top
1 root 20 0 10544 816 680 S 0 0.0 0:01.79 init
2 root 20 0 0 0 0 S 0 0.0 0:00.01 kthreadd
3 root 20 0 0 0 0 S 0 0.0 0:01.14 ksoftirqd/0
5 root 20 0 0 0 0 S 0 0.0 0:00.99 kworker/u:0
There is only one vCPU is runnig at 100%.
Currently this virtual server is a single VM on the ESXi host. The physical host has 40 cores, in the VM we load only one vCPU from the 8, which can load only one physical core, eg. the physical machine is not loaded at all.
We are planning to run multiple response time sensitive application servers in multiple VMs on several physical host, but the current situation does not allow to go this solution into production.
Regards,
Tamas