RDMA(Remote Direct Memory Access)를 사용하면 네트워크 장치가 다른 시스템의 애플리케이션 메모리로 직접 데이터를 전송할 수 있어 처리량이 증가하고 특정 네트워킹 환경에서 지연이 감소합니다.
주요 차이점은 iWARP는 TCP에서 RDMA를 수행하고, RoCEv2는 UDP를 사용한다는 점입니다.
드롭된 패킷으로 인한 성능 저하를 피하기 위해, 모든 네트워크 인터페이스와 스위치에서 링크 수준 흐름 제어 또는 우선순위 흐름 제어를 활성화하십시오.
참고:
|
이러한 기본 Linux RDMA 설치 지침은 다음 장치에 적용됩니다.
자세한 설치 및 구성 정보는 RDMA를 지원하는 인텔 이더넷 장치용 드라이버 tarball의 Linux RDMA 드라이버 README 파일을 참조하십시오.
이 예제는 RHEL에 한정됩니다. 운영 체제의 세부 사항은 다를 수 있습니다.
# tar zxf irdma-<x.x.x>.tar.gz
# cd irdma-<x.x.x>
# ./build.sh
# modprobe irdma
NOTE: By default, the irdma driver is loaded in iWARP mode. It uses the devlink interface to enable RoCEv2 per port. To load all irdma ports in RoCEv2 mode, use the following:# modprobe irdma roce_ena=1 |
# yum erase rdma-core
# wget https://github.com/linux-rdma/rdma-core/releases/download/v27.0/rdma-core-27.0.tar.gz
NOTE: Download the rdma-core version that matches the version of the libirdma patch file included with the driver. For example, libirdma-27.0.patch requires rdma-core-27.0.tar.gz . |
# tar -xzvf rdma-core-<version>.tar.gz
# cd rdma-core-<version>
# patch -p2 <<path-to-component-build>/libirdma-<version>.patch
# cd ..
# chgrp -R root <path-to-rdma-core>/redhat
# tar -zcvf rdma-core-<version>.tgz rdma-core-<version>
# mkdir -p ~/rpmbuild/SOURCES
# mkdir -p ~/rpmbuild/SPECS
# cp rdma-core-<version>.tgz ~/rpmbuild/SOURCES/
# cd ~/rpmbuild/SOURCES
# tar -xzvf rdma-core-<version>.tgz
# cp ~/rpmbuild/SOURCES/rdma-core-<version>/redhat/rdma-core.spec ~/rpmbuild/SPECS/
# cd ~/rpmbuild/SPECS/
# rpmbuild -ba rdma-core.spec
# cd ~/rpmbuild/RPMS/x86_64
# yum install *<version>*.rpm
이러한 기본 FreeBSD RDMA 설치 지침은 다음 장치에 적용됩니다.
# tar -xf ixl-<version>.tar.gz
# tar -xf iw_ixl-<version>.tar.gz
# cd ixl-<version>/src directory
# make
# make install
# cd iw_ixl-<version>/src
# make clean
# make IXL_DIR=$PATH_TO_IXL/ixl-<version>/src
# make install
# sysctl dev.ixl.<interface_num>.fc=3
자세한 설치 및 구성 정보는 RDMA를 지원하는 인텔 이더넷 장치용 드라이버 tarball의 FreeBSD RDMA 드라이버 README 파일을 참조하십시오.
ND(Network Direct)는 사용자 모드 애플리케이션에 의한 RDMA 기능 사용을 허용합니다.
참고: 사용자 모드 애플리케이션은 Microsoft HPC Pack 또는 Intel MPI Library와 같은 전제 조건을 가질 수도 있습니다. 자세한 내용은 애플리케이션 문서를 참조하십시오. |
Intel® Ethernet User Mode RDMA Provider는 Microsoft* Windows Server* 2012 R2 이상에서 지원됩니다.
사용자 모드 ND(Network Direct) 기능을 설치하려면 아래 단계를 따르십시오.
참고: Windows 방화벽이 비활성화되어 있거나 타사 방화벽을 사용 중이면 수동으로 이 규칙을 추가해야 합니다. |
RDMA NDK(Network Direct Kernel) 기능은 인텔 기반 네트워킹 드라이버에 포함되며 추가적인 기능을 설치할 필요가 없습니다.
서브넷에서 NDK의 RDMA 기능을 허용하려면 기본 드라이버 설치 도중 RDMA Configuration Options 화면에서 "Enable RDMA routing across IP Subnets(IP 서브넷에서 RDMA 라우팅 활성화)"를 선택해야 합니다.
드롭된 패킷으로 인한 성능 저하를 피하기 위해, 모든 네트워크 인터페이스와 스위치에서 우선순위 흐름 제어(PFC) 또는 링크 수준 흐름 제어를 활성화하십시오.
참고: Microsoft Windows Server 운영체제를 실행하는 시스템에서 *QoS/우선순위 흐름 제어를 활성화하면 링크 수준 흐름 제어가 비활성화됩니다. |
다음 PowerShell 명령을 사용하여 Microsoft Windows Server 운영체제에서 PFC 활성화:
Install-WindowsFeature -Name Data-Center-Bridging -IncludeManagementTools
New-NetQoSPolicy "SMB" -NetDirectPortMatchCondition 445 -PriorityValue8021Action 3
Enable-NetQosFlowControl -Priority 3
Disable-NetQosFlowControl -Priority 0,1,2,4,5,6,7
New-NetQosTrafficClass -Name "SMB" -Priority 3 -BandwidthPercentage 60 -Algorithm ETS
Set-NetQosDcbxSetting -Willing $FALSE
Enable-NetAdapterQos -Name "Slot1 4 2 Port 1"
다음 Microsoft* PowerShell* 명령을 사용하여 네트워크 인터페이스에서 RDMA가 활성화되어 있는지 확인할 수 있습니다.
Get-NetAdapterRDMA
네트워크 인터페이스가 RDMA를 지원하고 멀티채널이 활성화되어 있는지 확인하려면 다음 PowerShell 명령을 사용합니다.
Get-SmbClientNetworkInterface
Network Direct가 운영 체제에서 활성화되어 있는지 확인하려면 다음 PowerShell 명령을 사용합니다.
Get-NetOffloadGlobalSetting | Select NetworkDirect
각 RDMA 지원 네트워크 인터페이스가 포트 445에 리스너를 가지고 있는지 확인하려면 netstat를 사용합니다(RDMA를 지원하는 Windows Client OS가 리스너를 게시하지 않을 수도 있음). 예를 들면 다음과 같습니다.
netstat.exe -xan | ? {$_ -match "445"}
VMSwitch에 연결된 가상 어댑터에서 RDMA 기능을 활성화하려면, SRIOV(Single Root IO Virtualization)와 VMQ(Virtual Machine Queues) 고급 속성이 각 포트에서 활성화되어 있어야 합니다. 특정 상황에서 이러한 설정은 기본적으로 비활성화되었을 수 있습니다. 이러한 옵션은 어댑터 속성 대화 상자의 고급 탭에서 수동으로 또는 다음 Powershell 명령을 사용해서 설정할 수 있습니다.
Set-NetAdapterAdvancedProperty -Name <nic_name> -RegistryKeyword *SRIOV -RegistryValue 1
Set-NetAdapterAdvancedProperty -Name <nic_name> -RegistryKeyword *VMQ -RegistryValue 1
NDK 모드 3을 사용하면 커널 모드 Windows 구성 요소가 Hyper-V 게스트 파티션 내에서 RDMA 기능을 사용할 수 있습니다. 인텔 이더넷 장치에서 NDK 모드 3을 활성화하려면 다음 절차를 따르십시오.
New-VMSwitch -Name <switch_name> -NetAdapterName <device_name>
-EnableIov $true
Set-NetAdapterAdvancedProperty -Name <device_name> -RegistryKeyword RdmaMaxVfsEnabled -RegistryValue <Value: 0 - 32>
Get-NetAdapterRdma | Disable-NetAdapter
Get-NetAdapterRdma | Enable-NetAdapter
Add-VMNetworkAdapter -VMName <vm_name> -VMNetworkAdapterName <device_name> -SwitchName <switch_name>
Set-VMNetworkAdapterRdma -VMName <vm_name> -VMNetworkAdapterName <device_name> -RdmaWeight 100
Set-VMNetworkAdapter -VMName <vm_name> -VMNetworkAdapterName <device_name> -IovWeight 100
Set-NetAdapterAdvancedProperty -Name <device_name> -RegistryKeyword RdmaVfEnabled -RegistryValue 1
Get-NetAdapterRdma | Enable-NetAdapterRdma
NDK는 Windows 구성 요소(예: SMB Direct 스토리지)가 RDMA 기능을 사용할 수 있도록 지원합니다.
이 섹션에서는 RDMA 테스트를 통해 인텔 이더넷 기능을 확인하는 권장되는 방법과 Microsoft* Windows* 운영 체제에서의 성능에 대해 간략히 설명합니다.
SMB Direct는 스토리지 워크로드이므로 벤치마크의 성능이 테스트 대상 네트워크 인터페이스가 아닌 스토리지 장치의 속도로 제한될 수도 있다는 점에 유의하십시오. 인텔에서는 테스트 대상 네트워크 장치의 진정한 성능을 테스트할 수 있도록 가능한 한 가장 빠른 스토리지를 사용하도록 권장합니다.
테스트 지침:
Copyright (C) 2019 ? 2020, 인텔사. 모든 권한은 인텔사에 있습니다.
인텔사는 이 문서의 오류나 누락에 대한 책임을 지지 않습니다. 인텔은 여기에 수록된 정보를 업데이트한다는 약속을 하지 않습니다.
인텔은 미국 및/또는 기타 국가에서 인텔사의 상표입니다.
*다른 이름과 브랜드는 다른 회사의 소유일 수 있습니다.
본 소프트웨어는 라이센스 하에서 공급되며 라이센스 계약 내용에 따라서만 사용하거나 복사할 수 있습니다. 본 설명서의 정보는 정보 제공 목적으로만 제공되며 예고 없이 바뀔 수 있습니다. 또한 이 정보를 인텔사에서 확인한 내용으로 간주해서는 안 됩니다. 인텔사는 본 문서 또는 본 문서와 관련하여 제공되었을 수 있는 소프트웨어에 나타날 수 있는 오류나 부정확성에 대한 책임을 지지 않습니다. 해당 라이센스에서 허용하는 경우를 제외하고 인텔사의 명시적인 서면 동의 없이는 어떠한 수단으로도 본 문서의 어떠한 부분도 재생산하거나 검색 시스템에 저장하거나 전송하면 안 됩니다.