![pageSearch](/themes/hestia/images/page-search.webp)
NVMe/TCP 속도 향상
![May 22, 2023](/themes/hestia/images/news-details-icon1.webp)
프레젠테이션 다운로드:NVMe/TCP 속도 향상
저는 사기 그림버그(Sagi Grimberg)입니다. 저는 Lightbits Labs의 CTO이자 공동 창립자이며, NVMe over TCP 표준 사양의 공동 저자이기도 합니다.
그럼 간단한 소개부터 시작하겠습니다. TCP를 통한 NVMe란 무엇입니까? NVMe over TCP는 표준 TCP/IP 네트워크 위에서 NVMe를 실행하는 표준 전송 바인딩입니다. 이는 대기열 인터페이스와 TCP/IP 소켓 바로 위에서 실행되는 다중 대기열 인터페이스를 정의하는 표준 NVMe 사양을 따릅니다. 여기에는 표준 NVMe 명령 세트가 있으며, TCP 스트림을 매핑하는 NVMe/TCP PDU라고 부르는 것에 캡슐화됩니다. 따라서 여기 다이어그램에는 기본적으로 관리, I/O 및 기타 명령 세트를 정의하는 핵심 아키텍처인 NVMe 아키텍처가 있습니다.
01:14 SG: 그 아래에는 캡슐, 속성, 검색을 정의하는 NVMe over Fabrics가 있습니다. 그리고 TCP를 통한 NVMe는 기본적으로 추가 기능과 메시징을 정의하고 기본 패브릭 자체(우리의 경우 TCP/IP)에 대한 전송 매핑도 정의합니다.
그렇다면 TCP를 통한 NVMe에서는 대기열이 어떻게 처리되나요? 아니면 TCP를 통한 NVMe에서 대기열이 어떻게 정의되나요? 기본적으로 각 대기열은 양방향 TCP 연결에 매핑되며 명령된 데이터 전송은 일반적으로 소프트웨어에 있거나 하드웨어에 있는 경우 전용 컨텍스트에 의해 처리됩니다. 따라서 여기 다이어그램의 왼쪽에는 NVMe 전송 자체에 대한 대기열 인터페이스가 있고 제출 대기열과 완료 대기열이 있는 호스트가 있습니다. 모든 제출 및 완료는 NVMe-TCP I/O 스레드 또는 I/O를 내보내는 호스트 또는 네트워크에서 트리거되는 일부 I/O 컨텍스트(일반적으로 I/O를 완료하거나 수신하는 것)에서 처리됩니다. 데이터.
02:24 SG: 컨트롤러의 오른쪽에서도 동일한 그림이 발생하며 기본적으로 이는 호스트와 컨트롤러 간의 데이터 전송을 담당하는 컨텍스트입니다. 따라서 이러한 각 대기열은 실제로 전용 CPU에 매핑되지만 반드시 그런 것은 아니지만 실제로는 더 많을 수도 있고 더 적을 수도 있지만 요점은 컨트롤러 전체 직렬화가 없으므로 모든 대기열이 공유 CPU에 종속되지 않는다는 것입니다. 다른 대기열과 테이프를 연결하여 극도로 병렬화합니다. 여기 다이어그램은 대기열 세트에 대해 이전에 표시된 표준 다이어그램입니다. 호스트와 컨트롤러 사이에 관리 대기열도 있고 I/O 대기열 세트, 즉 제출 및 완료 대기열인 대기열 쌍도 있습니다. . NVMe/TCP에서는 기본적으로 이러한 각 대기열이 양방향 TCP 연결에 매핑됩니다. 따라서 지연 시간 기여도를 살펴보면 조금씩 포함될 수 있는 요소가 많이 있습니다. 우선 직렬화에서는 NVMe/TCP에서는 매우 가볍고 대기열 기준이므로 확장 가능합니다. 충분히 좋게.
이 기사는 다음의 일부입니다.
03:43 SG: 컨텍스트 전환. 따라서 우리는 드라이버 자체에서 제공하는 최소한 두 개의 메모리 복사본(일반적으로 골동품)을 가지며 커널 수준 드라이버로 제로 복사를 수행할 수 있습니다. 그러나 RX에서는 메모리 복사를 수행하는데 이는 큰 요인은 아니지만 매우 높은 부하에서는 추가 대기 시간이 발생할 수 있습니다. 인터럽트(NIC 인터럽트)는 확실히 영향을 미치며 CPU를 소비하고 단일 대기열이 달성할 수 있는 확장성에 영향을 미칩니다. LRO 및 GRO가 있거나 적응형 인터럽트 조정을 통해 이를 약간 완화할 수 있지만 대기 시간의 일관성이 떨어질 수 있습니다. 그런 다음 소켓 오버헤드가 있습니다. 존재하지만 실제로는 크지 않습니다. 다중 대기열 인터페이스에서 소켓이 경합되지 않는다는 점을 고려하면 꽤 빠르지만 작은 I/O에서는 영향을 미칠 수 있습니다. 인터럽트, 애플리케이션 및 I/O 스레드 간의 선호도는 올바르게 구성되지 않은 경우 확실히 영향을 미칠 수 있으며 이에 대해 자세히 다루겠습니다. 분명히 메모리 복사로 인해 발생하는 캐시 오염이 일부 있지만 충분히 큰 캐시를 가진 최신 CPU 코어에서는 그다지 과도한 수준은 아닙니다.
05:15 SG: