Udostępnij za pośrednictwem


Wprowadzenie do skalowania po stronie odbierającej

Skalowanie po stronie odbiorczej (RSS) to technologia sterowników sieciowych, która umożliwia wydajną dystrybucję przetwarzania przychodzących danych sieciowych na wiele CPU w systemach wieloprocesorowych.

Uwaga

Procesory z hiperwątkowością na tym samym rdzeniu procesora współdzielą ten sam mechanizm wykonawczy, więc efekt nie jest taki sam jak w przypadku procesorów wielordzeniowych. RSS z tego powodu nie używa procesorów z hyper-threadingiem.

Aby efektywnie przetwarzać otrzymane dane, funkcja obsługi przerwań odbioru sterownika miniportu planuje wywołanie procedury odroczonej (DPC). Bez funkcji RSS typowy DPC wskazuje wszystkie odebrane dane w wywołaniu DPC. W związku z tym wszystkie operacje przetwarzania odbioru skojarzone z przerwaniami są uruchamiane na procesorze, w którym występuje przerwanie odbierania. Aby zapoznać się z omówieniem przetwarzania odbierania danych innych niż RSS, zobacz przetwarzanie odbierania danych innych niż RSS.

Funkcja RSS umożliwia sterownikowi kart interfejsu sieciowego i miniportu zaplanowanie odbierania kontrolerów DPC na innych procesorach. Projekt RSS zapewnia, że przetwarzanie skojarzone z danym połączeniem pozostaje na przypisanym procesorze CPU. Karta sieciowa implementuje funkcję skrótu, a wynikowa wartość skrótu pomaga wybrać procesor.

Na poniższej ilustracji przedstawiono mechanizm RSS do określania procesora CPU.

Diagram przedstawiający proces mechanizmu RSS podczas określania procesora CPU.

Karta sieciowa używa funkcji wyznaczania wartości skrótu na zdefiniowanym obszarze (typ skrótu) w odebranych danych sieciowych. Zdefiniowany obszar może nie być ciągły.

Do indeksowania tabeli pośredniej używana jest pewna liczba najmniej znaczących bitów (LSB) wartości skrótu. Wartości w tabeli pośredniej służą do przypisywania odebranych danych do procesora CPU.

Aby uzyskać bardziej szczegółowe informacje na temat określania tabel pośrednich, typów skrótów i funkcji tworzenia skrótów, zobacz Konfiguracja RSS.

Dzięki obsłudze przerwania sygnalizowanego wiadomością (MSI) karta sieciowa może również przerywać pracę powiązanego procesora CPU. Aby uzyskać więcej informacji na temat obsługi NDIS dla msIs, zobacz NDIS MSI-X.

Obsługa sprzętu dla funkcji RSS

Na poniższej ilustracji przedstawiono poziomy obsługi sprzętu dla funkcji RSS.

Diagram przedstawiający różne poziomy obsługi sprzętu dla funkcji RSS.

Istnieją trzy możliwe poziomy obsługi sprzętu dla funkcji RSS:

Karta sieciowa zawsze przekazuje wartość skrótu 32-bitowego.

Jak funkcja RSS poprawia wydajność systemu

Funkcja RSS może poprawić wydajność systemu sieciowego, zmniejszając:

  • Przetwarzanie opóźnień poprzez rozproszenie procesu odbierania z karty sieciowej na wiele procesorów.

    Dystrybucja przetwarzania odbierania pomaga zagwarantować, że żaden CPU nie jest mocno obciążony, podczas gdy inny jest nieużywany.

  • Przeciążenie blokadą spinową poprzez zwiększenie prawdopodobieństwa, że algorytmy oprogramowania, które dzielą się danymi, wykonują się na tym samym CPU.

    Obciążenie wynikające z spinlocka występuje, na przykład, gdy funkcja działająca na CPU0 posiada spinlock na danych, do których musi uzyskać dostęp funkcja działająca na CPU1. Procesor CPU1 kręci się (czeka), aż CPU0 zwolni blokadę.

  • Ponowne ładowanie pamięci podręcznych i innych zasobów przez zwiększenie prawdopodobieństwa, że algorytmy oprogramowania współużytkujące dane są wykonywane na tym samym procesorze CPU.

    Takie ponowne ładowanie występuje na przykład wtedy, gdy funkcja, która wykonuje i uzyskuje dostęp do udostępnionych danych na procesorze CPU0, jest wykonywana na procesorze CPU1 w kolejnym przerwaniu.

Aby osiągnąć te ulepszenia wydajności w bezpiecznym środowisku, funkcja RSS udostępnia następujące mechanizmy:

  • Przetwarzanie rozproszone

    Funkcja RSS dystrybuuje przetwarzanie sygnałów odbioru z danej karty sieciowej w DPC do wielu procesorów.

  • Przetwarzanie w kolejności

    Funkcja RSS zachowuje kolejność dostarczania odebranych pakietów danych. Dla każdego połączenia sieciowego procesy RSS odbierają wskazania dotyczące skojarzonego procesora CPU. Aby uzyskać więcej informacji na temat przetwarzania odbierania RSS, zobacz Wskazywanie danych odbierania RSS.

  • Dynamiczne równoważenie obciążenia

    Funkcja RSS umożliwia ponowne równoważenie obciążenia sieciowego między procesorami CPU w zależności od obciążenia systemu hosta. Aby ponownie zrównoważyć obciążenie, nakładające się sterowniki mogą zmienić tabelę pośrednią. Aby uzyskać więcej informacji na temat określania tabel pośrednich, typów skrótów i funkcji tworzenia skrótów, zobacz sekcję Konfiguracja RSS.

  • Skalowanie po stronie wysyłania

    Funkcja RSS umożliwia stosom sterowników przetwarzanie danych wysyłanych i odbieranych dla danego połączenia na tym samym procesorze. Zazwyczaj nadrzędny sterownik (na przykład TCP) wysyła część bloku danych i czeka na potwierdzenie przed wysłaniem pozostałych danych. Następnie potwierdzenie wyzwala kolejne żądania wysyłania. Tabela pośrednia RSS identyfikuje określony procesor dla przetwarzania danych odbieranych. Domyślnie przetwarzanie wysyłania działa na tym samym procesorze, jeśli jest wyzwalane przez potwierdzenie odbioru. Sterownik może również określić procesor CPU (na przykład jeśli jest używany czasomierz).

  • Bezpieczny hash

    Funkcja RSS zawiera podpis zapewniający dodatkowe zabezpieczenia. Ten podpis chroni system przed złośliwymi hostami zdalnymi, które mogą podjąć próbę wymuszenia stanu systemu w stanie niezrównoważonym.

  • Obsługa MSI-X

    Funkcja RSS, z obsługą MSI-X, uruchamia procedurę obsługi przerwań (ISR) na tym samym procesorze CPU, który później wykonuje DPC. Zmniejsza to obciążenie blokady spin i ponowne ładowanie pamięci podręcznych.