수신측 크기 조정 소개

RSS(수신 쪽 크기 조정)는 다중 프로세서 시스템의 여러 CPU에서 네트워크 수신 처리를 효율적으로 분산할 수 있는 네트워크 드라이버 기술입니다.

참고

동일한 코어 프로세서의 하이퍼 스레드 CPU는 동일한 실행 엔진을 공유하므로 효과는 여러 코어 프로세서가 있는 것과 동일하지 않습니다. 이러한 이유로 RSS는 하이퍼 스레드 프로세서를 사용하지 않습니다.

수신된 데이터를 효율적으로 처리하기 위해 미니포트 드라이버의 수신 인터럽트 서비스 함수는 DPC(지연 프로시저 호출)를 예약합니다. RSS가 없으면 일반적인 DPC는 DPC 호출 내에서 수신된 모든 데이터를 나타냅니다. 따라서 인터럽트와 연결된 모든 수신 처리는 수신 인터럽트 발생 CPU에서 실행됩니다. 비 RSS 수신 처리에 대한 개요는 비 RSS 수신 처리를 참조하세요.

RSS를 사용하면 NIC 및 미니포트 드라이버가 다른 프로세서에서 수신 DPC를 예약할 수 있습니다. RSS 디자인은 지정된 연결과 연결된 처리가 할당된 CPU에 유지되도록 합니다. NIC는 해시 함수를 구현하며, 결과 해시 값은 CPU를 선택하는 데 도움이 됩니다.

다음 그림에서는 CPU를 결정하기 위한 RSS 메커니즘을 보여 줍니다.

CPU를 결정하는 RSS 메커니즘의 프로세스를 보여 주는 다이어그램

NIC는 해시 함수를 사용하여 수신된 네트워크 데이터 내의 정의된 영역(해시 형식)에 대한 해시 값을 계산합니다. 정의된 영역은 인접하지 않을 수 있습니다.

해시 값의 LSB(최소 비트)는 간접 참조 테이블을 인덱싱하는 데 사용됩니다. 간접 참조 테이블의 값은 받은 데이터를 CPU에 할당하는 데 사용됩니다.

간접 참조 테이블, 해시 형식 및 해시 함수를 지정하는 방법에 대한 자세한 내용은 RSS 구성을 참조하세요.

MSI(메시지 신호 인터럽트) 지원을 사용하면 NIC가 연결된 CPU를 중단할 수도 있습니다. MSI에 대한 NDIS 지원에 대한 자세한 내용은 NDIS MSI-X를 참조하세요.

RSS에 대한 하드웨어 지원

다음 그림에서는 RSS에 대한 하드웨어 지원 수준을 보여 줍니다.

RSS에 대한 다양한 수준의 하드웨어 지원을 보여 주는 다이어그램

RSS에 대한 세 가지 가능한 수준의 하드웨어 지원이 있습니다.

NIC는 항상 32비트 해시 값을 전달합니다.

RSS가 시스템 성능을 개선하는 방법

RSS는 다음을 줄임으로써 네트워크 시스템 성능을 향상시킬 수 있습니다.

  • 여러 CPU에 NIC에서 수신 처리를 배포하여 지연 처리

    수신 처리를 분산하면 다른 CPU가 유휴 상태일 때 CPU가 많이 로드되지 않도록 할 수 있습니다.

  • 데이터를 공유하는 소프트웨어 알고리즘이 동일한 CPU에서 실행되는 확률을 높여 잠금 오버헤드를 회전합니다.

    예를 들어 CPU0에서 실행되는 함수에 CPU1에서 실행되는 함수가 액세스해야 하는 데이터에 대한 스핀 잠금이 있는 경우 스핀 잠금 오버헤드가 발생합니다. CPU1은 CPU0이 잠금을 해제할 때까지 회전(대기)합니다.

  • 데이터를 공유하는 소프트웨어 알고리즘이 동일한 CPU에서 실행되는 확률을 높여 캐시 및 기타 리소스를 다시 로드합니다.

    예를 들어 CPU0에서 공유 데이터를 실행하고 액세스하는 함수가 후속 인터럽트에서 CPU1에서 실행되는 경우 이러한 다시 로드가 발생합니다.

보안 환경에서 이러한 성능 향상을 달성하기 위해 RSS는 다음 메커니즘을 제공합니다.

  • 분산 처리

    RSS는 DPC의 지정된 NIC에서 수신 표시 처리를 여러 CPU에 분산합니다.

  • 순서대로 처리

    RSS는 수신된 데이터 패킷의 배달 순서를 유지합니다. 각 네트워크 연결에 대해 RSS 프로세스는 연결된 CPU에 대한 표시를 받습니다. RSS 수신 처리에 대한 자세한 내용은 RSS 수신 데이터 표시를 참조하세요.

  • 동적 부하 분산

    RSS는 호스트 시스템 부하가 다르기 때문에 CPU 간에 네트워크 처리 부하의 균형을 다시 조정하는 수단을 제공합니다. 부하를 재조정하기 위해 오버리싱 드라이버는 간접 참조 테이블을 변경할 수 있습니다. 간접 참조 테이블, 해시 형식 및 해시 함수를 지정하는 방법에 대한 자세한 내용은 RSS 구성을 참조하세요.

  • 송신 쪽 크기 조정

    RSS를 사용하면 드라이버 스택이 동일한 CPU에서 지정된 연결에 대한 송신 및 수신 쪽 데이터를 처리할 수 있습니다. 일반적으로 지나치게 많이 사용하는 드라이버(예: TCP)는 데이터 블록의 일부를 보내고 데이터의 균형을 보내기 전에 승인을 기다립니다. 그러면 승인이 후속 보내기 요청을 트리거합니다. RSS 간접 참조 테이블은 수신 데이터 처리에 대한 특정 CPU를 식별합니다. 기본적으로 송신 처리는 수신 승인에 의해 트리거되는 경우 동일한 CPU에서 실행됩니다. 드라이버는 CPU를 지정할 수도 있습니다(예: 타이머를 사용하는 경우).

  • 보안 해시

    RSS에는 추가 보안을 제공하는 서명이 포함되어 있습니다. 이 서명은 시스템을 불균형 상태로 강제 적용하려고 시도할 수 있는 악의적인 원격 호스트로부터 시스템을 보호합니다.

  • MSI-X 지원

    MSI-X를 지원하는 RSS는 나중에 DPC를 실행하는 동일한 CPU에서 ISR(인터럽트 서비스 루틴)을 실행합니다. 이렇게 하면 스핀 잠금 오버헤드 및 캐시 다시 로드가 줄어듭니다.