RDMA – 산술 네트워크용 핵심 기술

산술 네트워크는 산술 전력 공급 문제를 해결하기 위한 것으로 RDMA(Remote Direct Data Access)를 비롯한 산술 전력의 여러 핵심 기술은 네트워크 성능 지표와 밀접한 관련이 있습니다.

RDMA는 Remote Direct Memory Access의 약자로, 네트워크 전송에서 서버 측 데이터 처리 지연을 해결하기 위해 만들어졌습니다.

RDMA는 데이터를 네트워크를 통해 컴퓨터의 저장 영역으로 직접 전송하여 운영 체제에 영향을 주지 않고 한 시스템에서 원격 시스템 메모리로 데이터를 빠르게 이동하므로 많은 컴퓨팅 처리 기능을 사용할 필요가 없습니다. 외부 메모리 복제 및 컨텍스트 전환의 오버헤드를 제거하여 애플리케이션 시스템 성능 향상을 위해 메모리 대역폭과 CPU 주기를 확보합니다.

전통적인 의미의 DMA

DMA(직접 메모리 액세스)는 I/O 교환이 전적으로 하드웨어에 의해 수행되는 작업 모드입니다. 이 모드에서 DMA 컨트롤러는 CPU에서 버스를 완전히 제어하고 데이터 교환은 CPU를 거치지 않고 메모리와 IO 장치 간에 직접 이루어집니다. DMA 컨트롤러는 주소 및 제어 신호를 메모리로 보내고, 주소를 수정하고, 전송된 워드 수를 세고, 전송 작업의 끝을 인터럽트에서 CPU에 보고합니다.

DMA 방식을 사용하는 목적은 전용 DMA 컨트롤러(DMAC)를 사용하여 액세스 주소를 생성하고 액세스 프로세스를 제어함으로써 대용량 데이터 전송 중에 CPU 오버헤드를 줄이는 것입니다. 장점은 연산이 하드웨어 회로에 의해 구현되고, 전송 속도가 빠르며, CPU가 간섭하지 않고 초기화 및 종료 시에만 참여하고, CPU가 주변 장치와 병렬로 작동하여 효율성이 높다는 점입니다.

전통적인 의미의 DMA

RDMA의 작동 원리

일반 NIC는 하드웨어 검사 지원 및 소프트웨어 개선 기능을 통합하여 전송된 데이터의 복사본 수를 줄이지만, 많은 CPU 계산 주기를 차지하는 수신 데이터의 복사본 수는 줄이지 ​​않습니다.

일반 NIC의 작동 프로세스

  1. 데이터 송신자는 사용자 공간 버퍼에서 커널 공간의 소켓 버퍼로 데이터를 복사해야 합니다.
  2. 데이터 송신자는 데이터 캡슐화를 위해 커널 공간에 패킷 헤더를 추가해야 합니다.
  3. 데이터는 네트워크 전송을 위해 커널 공간의 소켓 버퍼에서 NIC 버퍼로 복사됩니다.
  4. 데이터 수신기는 원격 시스템에서 보낸 패킷을 수신하고 패킷을 NIC 버퍼에서 커널 공간의 소켓 버퍼로 복사합니다.
  5. 일련의 다층 네트워크 프로토콜이 패킷을 구문 분석한 후 구문 분석된 데이터가 커널 공간 소켓 버퍼에서 사용자 공간 버퍼로 복사됩니다.
  6. 이 시점에서 시스템 컨텍스트 전환이 수행되고 사용자 응용 프로그램이 호출됩니다.

수신된 패킷은 먼저 시스템에 캐시되어 처리되고 해당 데이터가 TCP 연결에 할당됩니다. 그런 다음 수신 시스템은 요청되지 않은 TCP 데이터를 해당 응용 프로그램과 연결하고 시스템 버퍼에서 대상 저장소 주소로 데이터를 복사합니다. 따라서 네트워크 속도 제약 조건이 나타납니다. 커널과 애플리케이션 메모리 간의 데이터 처리에서 애플리케이션 통신의 강도가 증가하고 호스트 CPU의 과중한 작업으로 인해 시스템은 호스트 CPU 리소스를 지속적으로 추가하고 효율적인 소프트웨어를 구성하며 시스템 부하 관리를 향상시켜야 합니다.

문제의 핵심은 호스트 CPU에서 불필요하고 빈번한 데이터 전송을 제거하고 시스템 간 메시지 대기 시간을 줄이는 것입니다.

RDMA는 네트워크를 통해 컴퓨터의 저장소로 정보를 직접 전송하는 것으로, 운영 체제에 영향을 주지 않고 한 시스템에서 원격 시스템 메모리로 데이터를 빠르게 이동하므로 컴퓨터의 처리 능력이 많이 사용되지 않습니다. 외부 메모리 복사 및 텍스트 교환 작업을 제거하여 애플리케이션 성능 향상을 위해 버스 공간과 CPU 주기를 확보합니다. 일반적으로 시스템은 들어오는 정보를 올바른 영역에 저장하기 전에 분석하고 태그를 지정해야 합니다.

RDMA의 작업 프로세스

  • 애플리케이션이 RDMA 읽기 또는 쓰기 요청을 수행할 때 데이터 복제를 수행하지 않습니다. 커널 메모리 관련 없이 RDMA 요청은 사용자 공간에서 실행 중인 애플리케이션에서 로컬 NIC( NIC=네트워크 인터페이스 카드).
  • NIC는 버퍼의 내용을 읽고 네트워크를 통해 원격 NIC로 전송합니다.
  • 네트워크를 통해 전송되는 RDMA 정보에는 대상 가상 주소, 메모리 키 및 데이터 자체가 포함됩니다. 요청 완료는 사용자 공간에서 완전히 처리되거나(사용자 수준 완료 정렬을 폴링하여) 요청이 완료될 때까지 응용 프로그램이 휴면 상태인 경우 커널 메모리를 통해 처리될 수 있습니다. RDMA 작업을 통해 애플리케이션은 원격 애플리케이션의 메모리에서 데이터를 읽거나 메모리에 데이터를 쓸 수 있습니다.
  • 대상 NIC는 메모리 키를 확인하고 데이터를 애플리케이션 캐시에 직접 씁니다. 작업에 사용되는 원격 가상 메모리 주소는 RDMA 정보에 포함되어 있습니다.

RDMA의 무복사 기술

무복사 네트워킹 기술을 통해 NIC는 애플리케이션 메모리와 직접 데이터를 주고받을 수 있으므로 애플리케이션 메모리와 커널 메모리 간에 데이터를 복사할 필요가 없습니다. 커널 메모리 바이패스를 사용하면 애플리케이션이 커널 메모리 호출을 실행하지 않고 NIC에 명령을 보낼 수 있습니다. 커널 메모리 관련 없이 RDMA 요청은 사용자 공간에서 로컬 NIC로 그리고 네트워크를 통해 원격 NIC로 전송되므로 네트워크 전송 스트림을 처리할 때 커널 메모리 공간과 사용자 공간 사이의 환경 스위치 수가 줄어듭니다.

RDMA의 무복사 기술

왼쪽에는 기존의 TCP/IP 프로토콜과 일반 NIC가 수행하는 통신 프로세스를 볼 수 있습니다. 애플리케이션 계층이 NIC에서 데이터 메시지를 받으려면 두 개의 버퍼와 일반적인 TCP/IP 프로토콜 스택을 거쳐야 합니다. 여기서 소프트 인터럽트는 첫 번째 수신 큐 버퍼에서 데이터 메시지를 읽어야 합니다. 그런 다음 MSGBuff에 복사하고 마지막으로 응용 프로그램 계층은 시스템 호출을 통해 데이터 메시지를 사용자 상태로 읽습니다. 반면 오른쪽은 다음과 같은 규칙으로 RDMA를 사용하는 제로 복사 프로세스입니다.

1) RDMA 및 해당 LLP(하위 계층 프로토콜)는 RNIC(RNIC는 RDMA 네트워크 인터페이스 카드)라는 NIC에서 구현될 수 있습니다.

2) 1)에서 언급한 두 가지 구현은 모두 다음 단계를 거칩니다. 전송 및 수신된 데이터는 표시된 메모리 공간에 캐시된 다음 이 메모리 공간은 두 당사자 간에 협상된 규칙에 따라 애플리케이션 공간에 직접 매핑됩니다. 따라서 기존 구현 방법에서 최소 XNUMX개의 메모리 복사본을 줄입니다. 즉, 제로 복사를 달성합니다. 가는 선은 데이터 흐름의 방향을 나타내며 실제로 마커 캐시는 RDMA를 통해 사용자 캐시 공간에 직접 매핑됩니다.

RDMA의 구성

RDMA는 iWARP 프로토콜 제품군을 구성하고 고속 네트워크의 상호 운용성을 보장하는 데 사용되는 세 가지 프로토콜인 RDMA, DDP 및 MPA로 구현됩니다. DDP는 RDMA 메시지를 DDP 패킷으로 캡슐화하고 MPA 데이터를 형성하기 위해 식별자, 길이 및 CRC 검사를 DDP 패킷에 삽입하는 하위 마커 기반 MPA(Protocol-data-unit-Aligned) 계층으로 전달해야 합니다. 분절. IP 계층은 필요한 네트워크 라우팅 데이터를 패킷에 추가합니다.

데이터 운용 방법

RDMA 프로토콜은 원격 직접 데이터 버퍼에 대해 XNUMX가지 유형의 제어 작업을 제공합니다. 원격 버퍼 읽기 작업을 제외한 각 RDMA 제어 작업은 하나의 해당 RDMA 메시지만 생성합니다.

  1. 보내기: 보내기 작업은 보내기 메시지를 사용하여 보낸 사람 응용 프로그램에서 데이터 수신기 응용 프로그램에 의해 명시적으로 선언되지 않은 버퍼로 데이터를 직접 보냅니다. 따라서 Send 메시지는 DDP 태그 없는 버퍼 데이터 전송 모델을 사용하여 상위 응용 프로그램 메시지를 수신 응용 프로그램의 메타 태그 대기 버퍼로 전송합니다.
  2. 무효화로 보내기: 보낼 수사슴을 추가합니다. 메시지가 Stag에 의해 지정된 피어 애플리케이션 버퍼에 캐시되고 메시지 도착 알림이 수신 애플리케이션에 전달되면 수신 애플리케이션은 수신 애플리케이션이 사용 가능한 버퍼를 다시 선언할 때까지 발신 애플리케이션이 버퍼에 액세스하는 것을 허용하지 않습니다. 발신자 애플리케이션이 계속 사용할 수 있도록 합니다.
  3. 요청된 이벤트와 함께 보내기(SE로 보내기): 이 메시지는 보내기의 모든 기능과 메시지에 추가된 피드백을 사용하여 보낸 사람 응용 프로그램의 데이터를 데이터 수신기 응용 프로그램의 태그가 지정되지 않은 대기 중인 버퍼로 직접 보내는 데 사용됩니다.
  4. Send with Solicited Event and Invalidate (Send with SE and Invalidate): 이 메시지에 해당하는 동작은 Sender Application의 데이터를 Data Receiver Application에서 아직 명시적으로 선언하지 않은 버퍼로 직접 보내는 것으로, Send의 모든 기능을 가지고 있습니다. SE로 메시지에 피드백을 추가합니다. Send with SE의 모든 기능을 가지고 있으며 메시지에 피드백을 추가합니다.
  5. 원격 직접 메모리 액세스 쓰기: RDMA 쓰기 작업에 해당하며 발신자 애플리케이션에서 수신자 애플리케이션이 선언한 버퍼로 데이터를 전달하는 데 사용됩니다. 이 동작에서 수신 애플리케이션은 표시된 애플리케이션 수신 버퍼를 미리 할당하고 발신 애플리케이션이 버퍼 쓰기를 직접 수행할 수 있도록 해야 합니다. 동시에 발신자 애플리케이션은 선언에서 해당 버퍼의 위치, 크기 및 해당 Stag에 대한 정보도 가져옵니다. 그런 다음 발신자 애플리케이션은 DDP의 태그가 지정된 버퍼 데이터 전송 모델을 사용하여 발신자 애플리케이션의 메시지를 수신자 애플리케이션이 선언한 태그가 있는 버퍼로 직접 전송하는 RDMA 쓰기 작업을 시작합니다.
  6. 원격 직접 메모리 액세스 읽기: 반대편(데이터 소스에 해당)에 표시된 애플리케이션 버퍼에서 로컬 측(데이터 수신기에 해당)에 표시된 애플리케이션 버퍼로 데이터를 전달하는 RDMA 읽기 작업에 해당합니다. 데이터 소스의 상위 계층 애플리케이션은 먼저 태그가 지정된 애플리케이션 버퍼를 미리 할당하고 이 버퍼의 내용에 대한 직접 읽기 작업을 허용해야 합니다. 동시에 데이터 소스의 상위 계층 애플리케이션은 선언할 데이터 소스 버퍼의 위치, 크기 및 해당 Stag와 같은 정보를 로컬 상위 계층 애플리케이션에 전달해야 합니다. 위의 선언을 받은 후 데이터 수신기의 상위 응용 프로그램은 해당 태그가 지정된 응용 프로그램 버퍼를 할당하고 다른 쪽에서 데이터 읽기를 시작합니다.
  7. 종료: 종료 작업은 종료 메시지를 사용하여 현재 데이터 다이렉트 캐시 작업을 종료하기 위해 발생한 오류 메시지를 로컬 애플리케이션에 알립니다. Terminate 작업은 DDP의 메타 태그가 지정된 버퍼 모델을 사용하여 Terminate를 다른 쪽의 태그가 지정되지 않은 버퍼로 전달합니다.

RDMA 데이터 전송 프로세스

RDMA의 응용

RDMA는 전통적인 네트워크 하드웨어를 사용하여 TCP/IP 및 이더넷 표준을 사용하여 인터넷을 구축할 수 있는 이점이 있으며, 소형 서버를 클러스터에 연결하여 XNUMX개 이상의 프로세서가 있는 오늘날의 고급 서버가 처리할 수 있는 대규모 데이터베이스를 처리하는 데 사용될 것입니다. 핸들. RDMA, TOE, 10GB 이더넷 함께, 그것은 꽤 인상적인 기술입니다.

TOE(TCP Off로드 엔진, CPU에서 NIC로의 TCP/IP 프로토콜 처리)

호스트가 네트워크를 통해 통신하는 동안 CPU는 데이터 복제, 프로토콜 처리 및 인터럽트 처리를 포함하여 다층 네트워크 프로토콜의 패킷 처리에 많은 리소스를 소비해야 합니다. TOE 기술은 이러한 작업에서 CPU를 해방하고 위에서 언급한 호스트 프로세서의 작업을 NIC로 전환합니다. TOE 기술에는 다음을 지원하는 특정 NIC가 필요합니다. Off다중 계층 네트워크 프로토콜의 패킷을 캡슐화할 수 있는 로딩. 일반 NIC가 각 패킷에 대해 인터럽트를 트리거하는 동안 TOE NIC는 각 응용 프로그램이 인터럽트를 트리거하기 전에 전체 데이터 처리 프로세스를 완료할 수 있도록 하여 인터럽트에 대한 서버의 응답 부담을 크게 줄입니다.

TOE NIC는 데이터를 수신하면서 NIC 내에서 프로토콜 처리를 수행합니다. 따라서 데이터를 커널 공간 버퍼에 복사하지 않고 사용자 공간 버퍼에 직접 복사해야 합니다. 이 "무복사" 접근 방식은 NIC와 서버 간에 불필요한 앞뒤 데이터 복사를 방지합니다.

네이티브 RDMA

RDMA는 빠르게 고속 클러스터 및 서버 영역 네트워크의 기본 기능이 되고 있습니다. InfiniBand 네트워크 및 가상 인터페이스 아키텍처 기반 네트워크는 RDMA를 지원하고 RDMA over TCP/IP는 전송에 사용합니다. off로드 엔진 네트워크 카드는 현재 개발 중입니다. RDMA를 사용하여 고성능을 지원하는 프로토콜에는 Sockets Direct Protocol, SCSI RDMA Protocol(SRP) 및 Direct Access File System(DAFS)이 포함됩니다. RDMA를 사용하는 통신 라이브러리에는 DAPL(Direct Access Provider Library), MPI(Message Passing Interface) 및 VIPL(Virtual Interface Provider Library)이 포함됩니다. 분산 응용 프로그램을 실행하는 클러스터는 DAPL 또는 VIPL 및 클러스터에서 실행되는 데이터베이스 소프트웨어와 함께 사용할 때 노드 수가 동일한 다른 초기 RDMA 응용 프로그램에 비해 더 높은 성능과 더 나은 확장성을 제공할 수 있으므로 RDMA가 뛰어난 영역 중 하나입니다. 또한 RDMA 기술은 iWARP/RDMA가 기본 빌딩 블록인 고속 클러스터 시스템 및 SAN(Storage Area Network)의 기본 기능으로 빠르게 자리잡고 있습니다. iWARP(Internet Wide Area RDMA Protocol)는 TCP/IP 프로토콜을 기반으로 하는 RDMA 기술로, TCP 위에 DDP 레이어를 추가하여 기존 TCP/IP 프로토콜 스택 위에 RDMA 기술을 구현합니다. 스위치가 지원하는 무손실 이더넷 전송 없이 표준 이더넷 인프라에서 RDMA 기술 사용을 지원하지만 서버는 iWARP를 지원하는 네트워크 카드를 사용해야 합니다. 그러나 TCP의 영향으로 성능이 약간 떨어집니다. 또한 RDMA용 iSCSI 확장인 iSER은 RDMA 기능을 최대한 활용합니다. 초기 RDMA 애플리케이션에는 DAFS를 통한 원격 파일 서버 액세스와 SRP를 통한 저장 장치 액세스가 포함됩니다. RDMA는 빠르게 고속 클러스터 및 서버 영역 네트워크의 기본 기능이 되고 있습니다.

어플리케이션 NAS와 SAN에서

기존의 DAS(Direct-Attached Storage)는 용량 제약, 연결 거리 제한, 공유 및 관리의 어려움 등의 제약이 있는 서버 중심의 스토리지 구조입니다. 네트워크 시대의 애플리케이션 요구 사항을 충족할 수 없습니다. 네트워크 시대의 도래는 스토리지 기술에 엄청난 변화를 가져왔습니다. NAS(Network-Attached Storage) 및 SAN(Storage Area Network)은 네트워크의 애플리케이션 시스템에 풍부하고 빠르고 편리한 스토리지 리소스를 제공하는 동시에 공유 스토리지 리소스 및 중앙 집중식 관리를 가능하게 하여 오늘날 이상적인 스토리지 관리 및 애플리케이션 모델이 되었습니다. 그러나 NAS 구조에는 제한된 전송 용량, 제한된 확장성, 제한된 백업 기능 및 비효율적인 데이터베이스 서비스 지원과 같은 해결하기 어려운 문제가 있습니다. DAFS는 RDMA 및 NAS 스토리지 기능의 장점을 RDMA 드라이버에서 직접 실행하는 모든 읽기 및 쓰기 작업과 통합하여 네트워크 파일 프로토콜로 인한 시스템 부하를 줄입니다. 향후 NAS 스토리지 시스템은 DAFS 기술을 채택하여 시스템 성능을 향상시키고 성능 및 가격 측면에서 SAN 스토리지 시스템과 강력하게 경쟁할 것입니다.

인피니 밴드

InfiniBand의 10가지 주요 이점은 표준 프로토콜, XNUMXGB/s 성능, RDMA 및 전송을 기반으로 합니다. off짐. 그 장점은 RDMA 및 전송의 고속 전송에 있습니다. off부하 엔진. InfiniBand 네트워크 및 가상 인터페이스 아키텍처 기반 네트워크는 RDMA 사용을 지원하는 반면 전송 기능이 있는 RDMA over TCP/IP off로드 엔진 NIC는 InfiniBand 서버를 지원합니다. 호스트 채널 어댑터(HCA)는 프로토콜을 서버의 내부 PCI-X 또는 PCI-Express 버스로 변환하고 RDMA 기능이 있는 HCA를 커널 바이패스라고도 합니다. IB(InfiniBand)는 RDMA 기술을 기반으로 하는 인피니밴드 전용 IB 네트워크 카드 및 IB 스위치가 필요한 아키텍처. 성능면에서는 InfiniBand 네트워크가 확실히 최고이지만 네트워크 카드 및 스위치 가격도 매우 높습니다.

RoCE(RDMA over Ethernet)는 이더넷 기반의 RDMA 기술이며 IBTA에서도 제안했습니다. RoCE는 표준 이더넷 인프라에서 RDMA 기술 사용을 지원하지만 무손실 이더넷 전송을 위한 스위치 지원이 필요하며 네트워크 카드는 RoCE를 지원하는 특수 NIC여야 합니다.

기술이 계속 발전함에 따라 주류 RDMA 기술은 IB 기술과 이더넷 기반 RDMA 기술을 지원하는 IBoE(이더넷을 통한 IB)의 두 진영으로 나눌 수 있습니다. RoCE와 iWARP가 이 기술에 속합니다. IBoE 또는 IB over Ethernet은 이더넷에서 전파되고 이더넷 스위치와 함께 사용할 수 있는 반면 IB 프로토콜에는 전용 하드웨어 및 라우터가 필요합니다.

컴퓨팅 파워 네트워크의 지속적인 발전으로 단일 머신 또는 근거리 응용 프로그램에 사용되었던 DMA 기술은 더 큰 규모의 공간에 적용되어 컴퓨팅 파워 네트워크의 핵심 기술이 될 것입니다.

RDMA

코멘트 남김

위쪽으로 스크롤