Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 8 Next »

작성 중


5. 문제해결

5.1. 환경

5.1.1 NIC 설정

5.1.1.1 NIC 설정 확인
    • 증상
      • NIC의 속도 설정가 스펙보다 낮은 값이 나올 경우
        • 원인 
      • NIC의 Speed 설정이 스펙보다 낮게 설정

      • 확인 명령어 

        [root@proxy1 drbd.d]# ethtool p4p1   <- device 이름이 p4p1
      • 출력 결과 
        ethtool 출력 결과
        [root@proxy1 drbd.d]# ethtool p4p1
        Settings for p4p1:
                Supported ports: [ FIBRE ]
                Supported link modes:   10000baseT/Full
                Supported pause frame use: Symmetric
                Supports auto-negotiation: No
                Supported FEC modes: Not reported
                Advertised link modes:  Not reported
                Advertised pause frame use: No
                Advertised auto-negotiation: No
                Advertised FEC modes: Not reported
                Speed: 10000Mb/s
                Duplex: Full
                Port: Direct Attach Copper
                PHYAD: 0
                Transceiver: external
                Auto-negotiation: off
                Supports Wake-on: g
                Wake-on: g
                Current message level: 0x0000000f (15)
                                       drv probe link timer
                Link detected: yes
        [root@proxy1 drbd.d]#
        
        • 확인에 사용한 NIC의 스펙이 10G이므로 Speed 항목이 10000Mb/s (10G)로 올바르게 설정되어 있는지 확인합니다.
5.1.1.2 NIC 성능 최적화
    • 증상
      • drbdsim으로 측정한 DRX 대역폭이 서버의 네트워크 대역폭 지표와 차이가 발생 
        • 10G NIC간의 대역폭이 6~7G로 낮게 측정
        • 성능 튜닝이 확인된 NIC 
          • Intel X520-DA2 
        • 해결 
      • 링크 : /wiki/spaces/QA/pages/725254228
        • Windows 
          • Windows끼리의 NIC 대역폭이 6~7G에서 약 10G로 향상
          • 드라이버 다운로드 : https://downloadcenter.intel.com/ko/download/22283/Ethernet–?product=68673
          • 장치 관리자 → 고급 → 프로파일 → "낮은 대기시간 설정"
          • 전원 옵션 → 고성능 설정

          • 실행 → gpedit.msc → 컴퓨터 구성 → 관리 템플릿 → QoS 패킷스케쥴러 → 예약 대역폭 제한 → 사용안함
          • 설정 후 적용(update) 명령어 

            C:\Users\dgkim>gpupdate /force
    • Linux 
      • 최신의 Linux 는 별다른 설정없이도 10G 의 성능을 내며, 성능이 미비할 경우 튜닝을 한다.

        • 드라이버 다운로드 : https://downloadcenter.intel.com/ko/download/14687/Ethernet-Intel-Network-Adapter-Driver-for-PCIe-Intel-10-Gigabit-Ethernet-Network-Connections-Under-Linux-?v=t

          • 드라이버 빌드 및 적용

            리눅스 Intel X520-DA2 설치
            gcc 설치
            yum -y install gcc
            
            커널 소스 설치 (OS 와 동일한 버전)
            yum install /tmp/kernel-devel-3.10.0-693.el7.x86_64.rpm
            
            압축 해제 및 커널 모듈 빌드
            cd /pkg
            tar xvfz ixgbe-5.3.6.tar.gz
            cd ixgbe-5.3.6/src
            make install
            
            
            [root@proxy4 src]# make install
            make[1]: Entering directory `/usr/src/kernels/3.10.0-693.el7.x86_64'
            CC [M] /pkg/driver/ixgbe-5.3.6/src/ixgbe_main.o
            CC [M] /pkg/driver/ixgbe-5.3.6/src/ixgbe_api.o
            CC [M] /pkg/driver/ixgbe-5.3.6/src/ixgbe_common.o
            CC [M] /pkg/driver/ixgbe-5.3.6/src/ixgbe_dcb.o
            CC [M] /pkg/driver/ixgbe-5.3.6/src/ixgbe_dcb_82598.o
            CC [M] /pkg/driver/ixgbe-5.3.6/src/ixgbe_dcb_82599.o
            CC [M] /pkg/driver/ixgbe-5.3.6/src/ixgbe_ethtool.o
            CC [M] /pkg/driver/ixgbe-5.3.6/src/ixgbe_lib.o
            CC [M] /pkg/driver/ixgbe-5.3.6/src/ixgbe_mbx.o
            CC [M] /pkg/driver/ixgbe-5.3.6/src/ixgbe_sriov.o
            CC [M] /pkg/driver/ixgbe-5.3.6/src/ixgbe_param.o
            CC [M] /pkg/driver/ixgbe-5.3.6/src/ixgbe_phy.o
            CC [M] /pkg/driver/ixgbe-5.3.6/src/ixgbe_procfs.o
            CC [M] /pkg/driver/ixgbe-5.3.6/src/ixgbe_82598.o
            CC [M] /pkg/driver/ixgbe-5.3.6/src/ixgbe_82599.o
            CC [M] /pkg/driver/ixgbe-5.3.6/src/ixgbe_x540.o
            CC [M] /pkg/driver/ixgbe-5.3.6/src/ixgbe_x550.o
            CC [M] /pkg/driver/ixgbe-5.3.6/src/ixgbe_dcb_nl.o
            CC [M] /pkg/driver/ixgbe-5.3.6/src/ixgbe_debugfs.o
            CC [M] /pkg/driver/ixgbe-5.3.6/src/ixgbe_fcoe.o
            CC [M] /pkg/driver/ixgbe-5.3.6/src/ixgbe_ptp.o
            CC [M] /pkg/driver/ixgbe-5.3.6/src/ixgbe_sysfs.o
            CC [M] /pkg/driver/ixgbe-5.3.6/src/kcompat.o
            LD [M] /pkg/driver/ixgbe-5.3.6/src/ixgbe.o
            Building modules, stage 2.
            MODPOST 1 modules
            CC /pkg/driver/ixgbe-5.3.6/src/ixgbe.mod.o
            LD [M] /pkg/driver/ixgbe-5.3.6/src/ixgbe.ko
            make[1]: Leaving directory `/usr/src/kernels/3.10.0-693.el7.x86_64'
            Copying manpages...
            Installing modules...
            make[1]: Entering directory `/usr/src/kernels/3.10.0-693.el7.x86_64'
            INSTALL /pkg/driver/ixgbe-5.3.6/src/ixgbe.ko
            Can't read private key
            DEPMOD 3.10.0-693.el7.x86_64
            make[1]: Leaving directory `/usr/src/kernels/3.10.0-693.el7.x86_64'
            Running depmod...
            
            바이너리 파일 확인
            /lib/modules/`uname -r`/updates/drivers/net/ethernet/intel/ixgbe/ixgbe.ko
            
            기존드라이버 정보 확인
            modinfo ixgbd | grep -i version
            version: 4.4.0-k-rh7.4
            
            커널모듈 로딩
            modprobe <ixgbe> [parameter=port1_value,port2_value]
            
            신규 드라이버 정보 확인
            modinfo ixgbd | grep -i version
            version: 5.3.6
            
            커널모듈 드라이버 부팅시 로딩 설정
            dracut --force
            
            ethtool -C p4p1 adaptive-tx on
            ethtool -C p4p1 adaptive-rx on
            
            ethtool -C p4p2 adaptive-tx on
            ethtool -C p4p2 adaptive-rx on
            
            tuned유틸 설치
            yum install tuned
            
            tuned 설정
            tuned-adm profile latency-performance
      • 기타
        • 위 튜닝을 했음에도 Windows ↔ Linux는 약 8~9G 성능밖에 나오지 않는데 정확한 원인은 알 수 없다. 

5.1.2 네트워크 Bandwidth 확인

노드가 연결된 네트워크 환경의 Bandwidth를 확인해서 NIC의 성능을 낼 수 있는지 확인합니다. 

  • iperf3
    • NIC 
      • Intel Corporation Ethernet Controller X710 for 10GbE SFP+ (rev 02) 
    • 명령어

      <로컬>
      [root@proxy1 drbd.d]# iperf3 -p 7795 -c 100.60.211.252
      
      <원격>
      [root@proxy2 drbd.d]# iperf3 -p 7795 -s
      
      
    • 실행결과

      iperf3 로컬 결과
      < 로컬 출력 >
      [root@proxy1 drbd.d]# iperf3 -p 7795 -c 100.60.211.252
      Connecting to host 100.60.211.252, port 7795
      [  4] local 100.60.211.251 port 46434 connected to 100.60.211.252 port 7795
      [ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
      [  4]   0.00-1.00   sec  1.10 GBytes  9.43 Gbits/sec    6    522 KBytes
      [  4]   1.00-2.00   sec  1.10 GBytes  9.42 Gbits/sec    3    527 KBytes
      [  4]   2.00-3.00   sec  1.09 GBytes  9.39 Gbits/sec    1    551 KBytes
      [  4]   3.00-4.00   sec  1.10 GBytes  9.41 Gbits/sec    0    561 KBytes
      [  4]   4.00-5.00   sec  1.09 GBytes  9.39 Gbits/sec    0    578 KBytes
      [  4]   5.00-6.00   sec  1.10 GBytes  9.42 Gbits/sec    0    592 KBytes
      [  4]   6.00-7.00   sec  1.10 GBytes  9.41 Gbits/sec    0    602 KBytes
      [  4]   7.00-8.00   sec  1.10 GBytes  9.42 Gbits/sec    0    634 KBytes
      [  4]   8.00-9.00   sec  1.10 GBytes  9.42 Gbits/sec    0    687 KBytes
      [  4]   9.00-10.00  sec  1.10 GBytes  9.42 Gbits/sec    0    775 KBytes
      - - - - - - - - - - - - - - - - - - - - - - - - -
      [ ID] Interval           Transfer     Bandwidth       Retr
      [  4]   0.00-10.00  sec  11.0 GBytes  9.41 Gbits/sec   10             sender
      [  4]   0.00-10.00  sec  11.0 GBytes  9.41 Gbits/sec                  receiver
      
      iperf Done.
      [root@proxy1 drbd.d]#
      
      < 원격 출력 >
      [root@proxy2 drbd.d]# iperf3 -p 7795 -s
      -----------------------------------------------------------
      Server listening on 7795
      -----------------------------------------------------------
      Accepted connection from 100.60.211.251, port 46432
      [  5] local 100.60.211.252 port 7795 connected to 100.60.211.251 port 46434
      [ ID] Interval           Transfer     Bandwidth
      [  5]   0.00-1.00   sec  1.06 GBytes  9.07 Gbits/sec
      [  5]   1.00-2.00   sec  1.10 GBytes  9.42 Gbits/sec
      [  5]   2.00-3.00   sec  1.09 GBytes  9.39 Gbits/sec
      [  5]   3.00-4.00   sec  1.10 GBytes  9.41 Gbits/sec
      [  5]   4.00-5.00   sec  1.09 GBytes  9.39 Gbits/sec
      [  5]   5.00-6.00   sec  1.10 GBytes  9.41 Gbits/sec
      [  5]   6.00-7.00   sec  1.10 GBytes  9.41 Gbits/sec
      [  5]   7.00-8.00   sec  1.10 GBytes  9.41 Gbits/sec
      [  5]   8.00-9.00   sec  1.10 GBytes  9.41 Gbits/sec
      [  5]   9.00-10.00  sec  1.10 GBytes  9.42 Gbits/sec
      [  5]  10.00-10.04  sec  40.9 MBytes  9.40 Gbits/sec
      - - - - - - - - - - - - - - - - - - - - - - - - -
      [ ID] Interval           Transfer     Bandwidth
      [  5]   0.00-10.04  sec  0.00 Bytes  0.00 bits/sec                  sender
      [  5]   0.00-10.04  sec  11.0 GBytes  9.37 Gbits/sec                  receiver
      -----------------------------------------------------------
      
      
      
    • NIC 10G 측정 결과

      • 송신 : 약 9.42 Gbps
      • 수신 : 약 9.41 Gbps

5.2. 구성

5.3. 상태

5.3.1 물리메모리

BAB는 물리메모리에 할당되어야 최대의 성능을 발휘할 수 있습니다. 

5.3.1.1 물리메모리의 사용 여부 확인 방법
  • 확인 명령어 

    [root@proxy1 drbd.d]# cat /proc/`pidof drx`/status
  • 원인 
    • 사용 가능한(Free) 물리 메모리가 부족할 경우에 Kernel이 자동으로 SWAP영역에 할당한다. 
  • 출력 결과
    DRX process status
    [root@proxy1 drbd.d]# cat /proc/`pidof drx`/status
    Name:   drx
    State:  S (sleeping)
    Tgid:   128901
    Ngid:   128901
    Pid:    128901
    PPid:   1
    TracerPid:      0
    Uid:    0       0       0       0
    Gid:    0       0       0       0
    FDSize: 64
    Groups:
    VmPeak:  4623456 kB
    VmSize:  4623456 kB
    VmLck:         0 kB
    VmPin:         0 kB
    VmHWM:   2197636 kB
    VmRSS:   2197636 kB
    RssAnon:         2192356 kB
    RssFile:            5280 kB
    ...생략...
  • 출력 확인
    • VmRSS는 커널이 프로세스에 할당한 물리 메모리 사이즈를 나타냅니다. 리소스의 memlimit에 설정한 사이즈보다 작으면 SWAP영역을 사용하고 있는 것입니다. 

5.4. 장애

5.5. 기타

6. 기타





  • No labels