Hi all, this is my problem, hope someone can help me in troubleshooting and solving this.
Question is: what can I do to move from 100Mbps to 1Gbps throughput for these guests.
Environment
a. proxmox ve 4.4 installed on a Dell poweredge R230 4GB ram. Apparently no problems here.
b. a couple of guests (both 250GB HDD, 1 CPU core - 1 out of 4 available -, 1GB ram, gentoo-linux based).
Network configuration for host/guests
host machine has network through bridge0 (bind to eth0), guest machines have network through bridge1 (bind to eth1). My laptop has static IP address to talk with guests or with hosts, depending on the network I am connected. I would like to test network speed (host sees a couple of 1Gbps capable NICs). Tested both virtio and e1000 for guest networki: f I use virtio network for guests, I cannot see stats or use mii-tool or ethtool. If I use e1000 network for guests, I can see that eth0 negotiates 1 Gbps full duplex.
Particular notes on guest environments
guest1 is an old environment with gentoo-linux and a 3.18.x kernel, compiled for virt-io support;
guest2 is a less-old environment with gentoo-linux and a 4.1.x kernel, compiled for virt-io support.
Problem is that:
guest1 transfer rate through network is close to 100 Mbps
guest2 transfer rate through network is close to 400/500 Mbps
Copying the kernel from guest2 to guest1, compiling it (even with same config file!) onto guest1 is not solving this issue, so I suspect that there is something wrong in the environment itself. Question is: what is wrong? Is there anyone kernel-expert that can help me in finding a solution? Upgrading the entire environment is not a feasible solution for me, unfortunately.
I have tested a couple of Ubuntu VMs on another Dell R230 (2 guests on same host) and they work 1 Gbps both transferring data to/from my PC and between themselves.
I ran iperf test alternating my pc (wolverine2 is the hostname) and guest1 as server. These are the results:
First test (wolverine2: server, guest1: client)
root@wolverine2:/home/maurizio# iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[ 4] local 192.168.32.31 port 5001 connected with 192.168.33.10 port 54981
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-10.0 sec 114 MBytes 95.6 Mbits/sec
------------------------------------------------------------
Client connecting to 192.168.33.10, TCP port 5001
TCP window size: 740 KByte (default)
------------------------------------------------------------
[ 4] local 192.168.32.31 port 49806 connected with 192.168.33.10 port 5001
[ 4] 0.0-10.0 sec 1.10 GBytes 942 Mbits/sec
guest1# iperf -c 192.168.32.31 -d
WARNING: option -d is not valid in single threaded versions
------------------------------------------------------------
Client connecting to 192.168.32.31, TCP port 5001
TCP window size: 43.8 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.33.10 port 54981 connected with 192.168.32.31 port 5001
[ 3] 0.0-10.0 sec 114 MBytes 95.9 Mbits/sec
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[ 4] local 192.168.33.10 port 5001 connected with 192.168.32.31 port 49806
[ 4] 0.0-10.0 sec 1.10 GBytes 941 Mbits/sec
Second test (guest1: server, wolverine2: client)
guest1# iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[ 4] local 192.168.33.10 port 5001 connected with 192.168.32.31 port 49832
[ 4] 0.0-10.0 sec 1.10 GBytes 941 Mbits/sec
------------------------------------------------------------
Client connecting to 192.168.32.31, TCP port 5001
TCP window size: 43.8 KByte (default)
------------------------------------------------------------
[ 4] local 192.168.33.10 port 55032 connected with 192.168.32.31 port 5001
[ 4] 0.0-10.0 sec 115 MBytes 95.9 Mbits/sec
root@wolverine2:/home/maurizio# iperf -c 192.168.33.10 -d
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
------------------------------------------------------------
Client connecting to 192.168.33.10, TCP port 5001
TCP window size: 1020 KByte (default)
------------------------------------------------------------
[ 5] local 192.168.32.31 port 49832 connected with 192.168.33.10 port 5001
[ ID] Interval Transfer Bandwidth
[ 5] 0.0-10.0 sec 1.10 GBytes 942 Mbits/sec
[ 4] local 192.168.32.31 port 5001 connected with 192.168.33.10 port 55032
[ 4] 0.0-10.0 sec 115 MBytes 95.6 Mbits/sec
I have tested using ethtool (when in e1000 virtualization mode) -> nothing changed
I have tested compiling kernel 4 with same configuration of guest2 into guest1 -> nothing changed
Question is: what can I do to move from 100Mbps to 1Gbps throughput for these guests.
Environment
a. proxmox ve 4.4 installed on a Dell poweredge R230 4GB ram. Apparently no problems here.
b. a couple of guests (both 250GB HDD, 1 CPU core - 1 out of 4 available -, 1GB ram, gentoo-linux based).
Network configuration for host/guests
host machine has network through bridge0 (bind to eth0), guest machines have network through bridge1 (bind to eth1). My laptop has static IP address to talk with guests or with hosts, depending on the network I am connected. I would like to test network speed (host sees a couple of 1Gbps capable NICs). Tested both virtio and e1000 for guest networki: f I use virtio network for guests, I cannot see stats or use mii-tool or ethtool. If I use e1000 network for guests, I can see that eth0 negotiates 1 Gbps full duplex.
Particular notes on guest environments
guest1 is an old environment with gentoo-linux and a 3.18.x kernel, compiled for virt-io support;
guest2 is a less-old environment with gentoo-linux and a 4.1.x kernel, compiled for virt-io support.
Problem is that:
guest1 transfer rate through network is close to 100 Mbps
guest2 transfer rate through network is close to 400/500 Mbps
Copying the kernel from guest2 to guest1, compiling it (even with same config file!) onto guest1 is not solving this issue, so I suspect that there is something wrong in the environment itself. Question is: what is wrong? Is there anyone kernel-expert that can help me in finding a solution? Upgrading the entire environment is not a feasible solution for me, unfortunately.
I have tested a couple of Ubuntu VMs on another Dell R230 (2 guests on same host) and they work 1 Gbps both transferring data to/from my PC and between themselves.
I ran iperf test alternating my pc (wolverine2 is the hostname) and guest1 as server. These are the results:
First test (wolverine2: server, guest1: client)
root@wolverine2:/home/maurizio# iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[ 4] local 192.168.32.31 port 5001 connected with 192.168.33.10 port 54981
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-10.0 sec 114 MBytes 95.6 Mbits/sec
------------------------------------------------------------
Client connecting to 192.168.33.10, TCP port 5001
TCP window size: 740 KByte (default)
------------------------------------------------------------
[ 4] local 192.168.32.31 port 49806 connected with 192.168.33.10 port 5001
[ 4] 0.0-10.0 sec 1.10 GBytes 942 Mbits/sec
guest1# iperf -c 192.168.32.31 -d
WARNING: option -d is not valid in single threaded versions
------------------------------------------------------------
Client connecting to 192.168.32.31, TCP port 5001
TCP window size: 43.8 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.33.10 port 54981 connected with 192.168.32.31 port 5001
[ 3] 0.0-10.0 sec 114 MBytes 95.9 Mbits/sec
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[ 4] local 192.168.33.10 port 5001 connected with 192.168.32.31 port 49806
[ 4] 0.0-10.0 sec 1.10 GBytes 941 Mbits/sec
Second test (guest1: server, wolverine2: client)
guest1# iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[ 4] local 192.168.33.10 port 5001 connected with 192.168.32.31 port 49832
[ 4] 0.0-10.0 sec 1.10 GBytes 941 Mbits/sec
------------------------------------------------------------
Client connecting to 192.168.32.31, TCP port 5001
TCP window size: 43.8 KByte (default)
------------------------------------------------------------
[ 4] local 192.168.33.10 port 55032 connected with 192.168.32.31 port 5001
[ 4] 0.0-10.0 sec 115 MBytes 95.9 Mbits/sec
root@wolverine2:/home/maurizio# iperf -c 192.168.33.10 -d
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
------------------------------------------------------------
Client connecting to 192.168.33.10, TCP port 5001
TCP window size: 1020 KByte (default)
------------------------------------------------------------
[ 5] local 192.168.32.31 port 49832 connected with 192.168.33.10 port 5001
[ ID] Interval Transfer Bandwidth
[ 5] 0.0-10.0 sec 1.10 GBytes 942 Mbits/sec
[ 4] local 192.168.32.31 port 5001 connected with 192.168.33.10 port 55032
[ 4] 0.0-10.0 sec 115 MBytes 95.6 Mbits/sec
I have tested using ethtool (when in e1000 virtualization mode) -> nothing changed
I have tested compiling kernel 4 with same configuration of guest2 into guest1 -> nothing changed