[vSphere/CentOS6.x] VMXNET3 & E1000 성능 테스트

VMXNET3 & E1000 성능 테스트


VMware Tools의 yum 설치 시도 관련성에 대해 다시 한 번 깊이 고려해 봅시다.
vmxnet3와 e1000으로 기준을 얻어보세요.

VM 준비


CentOS6.6에 각각 vmxnet3와 e1000대의 컴퓨터가 준비되어 있습니다.
또한 Linux(CentOS6.6 현재)에 대해kernel에 vmxnet3의 드라이버 상태가 포함되어 있습니다.
따라서 vmxnet3를 먼저 이용하려면 가상 머신을 만들 때 NIC에서 vmxnet3를 선택하여 배치하면 기본적으로 불러옵니다.
$ modinfo vmxnet3
filename:       /lib/modules/2.6.32-504.16.2.el6.x86_64/kernel/drivers/net/vmxnet3/vmxnet3.ko
version:        1.1.30.0-k
license:        GPL v2
description:    VMware vmxnet3 virtual NIC driver
author:         VMware, Inc.
srcversion:     502C6D11BE2EF75FC4A1B5F
alias:          pci:v000015ADd000007B0sv*sd*bc*sc*i*
depends:
vermagic:       2.6.32-504.16.2.el6.x86_64 SMP mod_unload modversions

네트워크 데이텀 가져오기


이번에는 iperf3로 네트워크의 기준을 얻으려고 한다.
소스 컴파일이 번거롭기 때문에 EPEL에서 배포하는 RPM을 이용합니다.
http://dl.fedoraproject.org/pub/epel/6/x86_64/repoview/iperf3.html

EPEL 저장소 배포


저장소를 추가합니다.
CentOS의 경우 외부 패키지에서 저장소를 설치할 수 있습니다.
$ yum list | grep epel-release.noarch
epel-release.noarch                         6-8                         extras
$ sudo yum install -y epel-release.noarch
추가되었는지 확인합니다.
또한 이번에는 iperf3를 설치하기 위해 가져온 것이기 때문에 기본값은 "enabled=0 (무효)"입니다.
[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

[epel-debuginfo]
name=Extra Packages for Enterprise Linux 6 - $basearch - Debug
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch/debug
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-6&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
gpgcheck=1

[epel-source]
name=Extra Packages for Enterprise Linux 6 - $basearch - Source
#baseurl=http://download.fedoraproject.org/pub/epel/6/SRPMS
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-6&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
gpgcheck=1

가방 찾기


"enabled=0"저장소는 "--enablerepo"옵션을 사용하여 임시로 사용할 수 있습니다.
$ yum list --enablerepo=epel | grep -i iperf3
iperf3.i686                                3.0.10-1.el6                 epel
iperf3.x86_64                              3.0.10-1.el6                 epel
iperf3-devel.i686                          3.0.10-1.el6                 epel
iperf3-devel.x86_64                        3.0.10-1.el6                 epel

설치

$ sudo yum install --enablerepo=epel iperf3

데이텀 구성


vmxnet3와 e1000 가상 기기와 서로 다른 위치에 있는 서버에 각각 iperf3를 설치합니다.다음은 서로 다른 패턴으로 동작한다.
※ 그림의 IP 주소는 가상 주소입니다.
  • VM(vmxnet3/CentOS6.6)iperf 클라이언트 모드
  • VM(e1000/CentOS6.6)iperf 클라이언트 모드
  • 서버(이번 아마존 EC2 사용) iperf 서버 모드

  • iperf3 사용 방법


    iperf2는 뒤로 호환되지 않으니 주의해야 합니다.
    즉, iperf2를 설치한 기계와 iperf3를 설치한 기계 간의 상호 통신을 테스트할 수 없다는 것이다.iperf의 버전은 통일이 필요합니다.
    기본적인 사용 방법 iperf2와 3은 모두 같다(옵션에 차이가 있음)
    http://www.unix-power.net/linux/iperf.html
    http://nextdeveloper.hatenablog.com/entry/2014/02/07/120719

    실행 결과


    기본적으로 10초 동안 데이터를 테스트했습니다.
    (※ iperf Server 측면 출력 보고서)
    vm(E1000)
    $ iperf3 -s
    -----------------------------------------------------------
    Server listening on 5201
    -----------------------------------------------------------
    Accepted connection from vm_IPADDR(E1000), port 41993
    [  5] local 172.31.6.XX port 5201 connected to vm_IPADDR(E1000) port 41994
    [ ID] Interval           Transfer     Bandwidth
    [  5]   0.00-1.00   sec  20.9 MBytes   175 Mbits/sec
    [  5]   1.00-2.00   sec  14.9 MBytes   125 Mbits/sec
    [  5]   2.00-3.00   sec  12.4 MBytes   104 Mbits/sec
    [  5]   3.00-4.00   sec  13.6 MBytes   114 Mbits/sec
    [  5]   4.00-5.00   sec  14.3 MBytes   120 Mbits/sec
    [  5]   5.00-6.00   sec  12.6 MBytes   106 Mbits/sec
    [  5]   6.00-7.00   sec  14.5 MBytes   122 Mbits/sec
    [  5]   7.00-8.00   sec  12.0 MBytes   101 Mbits/sec
    [  5]   8.00-9.00   sec  9.32 MBytes  78.2 Mbits/sec
    [  5]   9.00-10.00  sec  10.7 MBytes  89.6 Mbits/sec
    [  5]  10.00-10.03  sec   239 KBytes  72.8 Mbits/sec
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [ ID] Interval           Transfer     Bandwidth       Retr
    [  5]   0.00-10.03  sec   138 MBytes   116 Mbits/sec   64             sender
    [  5]   0.00-10.03  sec   136 MBytes   113 Mbits/sec                  receiver
    
    vm(VMXNET3)
    $ iperf3 -s
    -----------------------------------------------------------
    Server listening on 5201
    -----------------------------------------------------------
    Accepted connection from vm_IPADDR(VMXNET3), port 52894
    [  5] local 172.31.6.XX port 5201 connected to vm_IPADDR(VMXNET3) port 52895
    [ ID] Interval           Transfer     Bandwidth
    [  5]   0.00-1.00   sec  27.6 MBytes   232 Mbits/sec
    [  5]   1.00-2.00   sec  15.3 MBytes   128 Mbits/sec
    [  5]   2.00-3.00   sec  16.4 MBytes   137 Mbits/sec
    [  5]   3.00-4.00   sec  14.8 MBytes   124 Mbits/sec
    [  5]   4.00-5.00   sec  15.4 MBytes   129 Mbits/sec
    [  5]   5.00-6.00   sec  15.3 MBytes   128 Mbits/sec
    [  5]   6.00-7.00   sec  13.6 MBytes   114 Mbits/sec
    [  5]   7.00-8.00   sec  15.1 MBytes   127 Mbits/sec
    [  5]   8.00-9.00   sec  16.6 MBytes   140 Mbits/sec
    [  5]   9.00-10.00  sec  10.7 MBytes  89.6 Mbits/sec
    [  5]  10.00-10.04  sec   426 KBytes  92.3 Mbits/sec
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [ ID] Interval           Transfer     Bandwidth       Retr
    [  5]   0.00-10.04  sec   165 MBytes   138 Mbits/sec   82             sender
    [  5]   0.00-10.04  sec   161 MBytes   135 Mbits/sec                  receiver
    
    이 Average라면 VMXNET3에 트래픽이 있더라도
    1분 이내에 테스트를 실시한 결과는 다음과 같다.
    (※ iperf Client 측면 출력 보고서)
    vm(E1000)
    $ iperf3 -c remoteServer_IPADDR -V -t 60 -i 10
    iperf 3.0.10
    Linux vm-test3 2.6.32-504.16.2.el6.x86_64 #1 SMP Wed Apr 22 06:48:29 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
    Time: Fri, 01 May 2015 02:18:00 GMT
    Connecting to host remoteServer_IPADDR, port 5201
          Cookie: vm-test3.1430446680.734558.68d0d84b1
          TCP MSS: 1448 (default)
    [  4] local vm_IPADDR(E1000) port 42001 connected to remoteServer_IPADDR port 5201
    Starting Test: protocol: TCP, 1 streams, 131072 byte blocks, omitting 0 seconds, 60 second test
    [ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
    [  4]   0.00-10.00  sec   217 MBytes   182 Mbits/sec   54    170 KBytes
    [  4]  10.00-20.00  sec   181 MBytes   152 Mbits/sec   29    115 KBytes
    [  4]  20.00-30.00  sec   168 MBytes   141 Mbits/sec   30    122 KBytes
    [  4]  30.00-40.00  sec   181 MBytes   152 Mbits/sec   15    165 KBytes
    [  4]  40.00-50.00  sec   192 MBytes   161 Mbits/sec   31    134 KBytes
    [  4]  50.00-60.00  sec   132 MBytes   111 Mbits/sec   53    129 KBytes
    - - - - - - - - - - - - - - - - - - - - - - - - -
    Test Complete. Summary Results:
    [ ID] Interval           Transfer     Bandwidth       Retr
    [  4]   0.00-60.00  sec  1.05 GBytes   150 Mbits/sec  212             sender
    [  4]   0.00-60.00  sec  1.04 GBytes   149 Mbits/sec                  receiver
    CPU Utilization: local/sender 1.0% (0.0%u/1.0%s), remote/receiver 3.5% (0.0%u/3.5%s)
    
    iperf Done.
    
    vm(VMXNET3)
    $ iperf3 -c remoteServer_IPADDR-V -t 60 -i 10
    iperf 3.0.10
    Linux vm-test4 2.6.32-504.16.2.el6.x86_64 #1 SMP Wed Apr 22 06:48:29 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
    Time: Fri, 01 May 2015 02:19:18 GMT
    Connecting to host remoteServer_IPADDR, port 5201
          Cookie: vm-test4.1430446758.532814.39107b692
          TCP MSS: 1448 (default)
    [  4] local vm_IPADDR(VMXNET3) port 52901 connected to remoteServer_IPADDR port 5201
    Starting Test: protocol: TCP, 1 streams, 131072 byte blocks, omitting 0 seconds, 60 second test
    [ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
    [  4]   0.00-10.00  sec   158 MBytes   132 Mbits/sec   46    189 KBytes
    [  4]  10.00-20.00  sec   158 MBytes   132 Mbits/sec   23    209 KBytes
    [  4]  20.00-30.00  sec   202 MBytes   170 Mbits/sec   22    238 KBytes
    [  4]  30.00-40.00  sec   204 MBytes   171 Mbits/sec   33    219 KBytes
    [  4]  40.00-50.00  sec   179 MBytes   150 Mbits/sec   10    197 KBytes
    [  4]  50.00-60.00  sec   196 MBytes   165 Mbits/sec   15    130 KBytes
    - - - - - - - - - - - - - - - - - - - - - - - - -
    Test Complete. Summary Results:
    [ ID] Interval           Transfer     Bandwidth       Retr
    [  4]   0.00-60.00  sec  1.07 GBytes   153 Mbits/sec  149             sender
    [  4]   0.00-60.00  sec  1.07 GBytes   153 Mbits/sec                  receiver
    CPU Utilization: local/sender 0.5% (0.0%u/0.5%s), remote/receiver 3.1% (0.9%u/2.2%s)
    
    iperf Done.
    
    1분의 평균은 큰 차이가 없다.
    동일한 클러스터에 속한 VM 간의 경우 문제가 없지만 External 통신의 경우 불안정합니다(*´_)ω・`)゜+.゜

    결과


    통신 경로에 병목이 되는 부분도 있고 엄밀한 성능 측정도 할 수 없지만 극단적인 차이가 없기 때문에 좋아하지요.
    하지만kernel에 포함되면 vmxnet3가 좋습니다.
    이번에는 CentOS6입니다.X만 비교했기 때문에 Windows 계열은 다를 수 있습니다.

    좋은 웹페이지 즐겨찾기