Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Zawsze istnieją kompromisy przy podejmowaniu decyzji o tym, które funkcje sprzętowe należy zaimplementować na karcie sieciowej. Coraz ważniejsze jest rozważenie dodania funkcji odciążania zadań, które umożliwiają moderowanie przerwań, dostrajanie dynamiczne na sprzęcie, poprawę korzystania z magistrali PCI i obsługę ramek Jumbo. Te funkcje odciążania są ważne dla wysokiej klasy karty sieciowej, która jest używana w konfiguracjach wymagających najwyższej wydajności.
- Obsługa odciążania sum kontrolnych TCP i IP
- Obsługa dużego odciążenia transferu (LSO)
- Obsługa odciążania zabezpieczeń adresów IP (IPSec)
- Ulepszanie moderowania przerwań
- Wydajne korzystanie z magistrali PCI
- Obsługa ramek jumbo
Obsługa odciążania sumy kontrolnej TCP i IP
Dla większości typowego ruchu sieciowego, przeniesienie obliczeń sumy kontrolnej do sprzętu adaptera sieciowego zapewnia znaczącą przewagę wydajności dzięki zmniejszeniu liczby cykli CPU wymaganych na bajt. Obliczanie sumy kontrolnej jest najbardziej kosztowną funkcją w stosie protokołów sieciowych z dwóch powodów:
- Przyczynia się do długiej długości ścieżki.
- Powoduje to efekty churningu pamięci podręcznej (zazwyczaj u nadawcy).
Przenoszenie obliczeń sumy kontrolnej na nadawcę poprawia ogólną wydajność systemu, zmniejszając obciążenie procesora hosta i zwiększając efektywność jego cache.
W laboratorium wydajności systemu Windows zmierzyliśmy poprawę przepływności TCP o 19%, gdy suma kontrolna została odciążona podczas obciążeń intensywnie korzystających z sieci. Analiza tej poprawy pokazuje, że 11% całkowitej poprawy wynika z zmniejszenia długości ścieżki, a 8% wynika z zwiększenia skuteczności pamięci podręcznych.
Odciążanie sumy kontrolnej na odbiorniku ma takie same zalety jak odciążanie sumy kontrolnej na nadawcy. Można zauważyć zwiększone korzyści w systemach, które działają zarówno jako klient, jak i serwer, takich jak serwer proxy dla gniazd. W systemach, w których procesor nie musi być zajęty, na przykład w systemie klienckim, korzyści wynikające z odciążania sumy kontrolnej mogą być widoczne w lepszych czasach reakcji sieci, zamiast w zauważalnej poprawie przepustowości.
Obsługa dużego rozładowywania wysyłania (LSO)
System Windows oferuje możliwość karty sieciowej/sterownika sieciowego do anonsowania maksymalnego rozmiaru segmentu (MSS), który jest większy niż MTU, dla TCP do 64K. Dzięki temu protokół TCP może przydzielić do sterownika bufor do 64K, dzieląc duży bufor na pakiety, które mieszczą się w ramach MTU sieci.
Segmentowanie TCP jest wykonywane przez sprzęt karty sieciowej i sterownika zamiast CPU hosta. Spowoduje to znaczne zwiększenie wydajności, jeśli procesor karty sieciowej jest w stanie obsłużyć dodatkową pracę.
W przypadku wielu przetestowanych kart sieciowych zaobserwowano niewielkie ulepszenia w przypadku czystych działań sieciowych, gdy procesor hosta był bardziej wydajny niż sprzęt karty sieciowej. Jednak w przypadku typowych obciążeń biznesowych ogólna poprawa wydajności systemu do 9% przepływności została zmierzona, ponieważ procesor CPU hosta używa większości cykli do wykonywania transakcji. W takich przypadkach przekazywanie segmentacji TCP do wykonywania przez sprzęt zwalnia procesor główny z obciążenia segmentacją, co pozwala procesorowi na wykorzystanie dodatkowych cykli do wykonywania większej liczby transakcji.
Obsługa odciążenia zabezpieczeń IP (IPSec)
System Windows oferuje możliwość przeniesienia operacji szyfrowania protokołu IPSec na sprzęt karty sieciowej. Szyfrowanie, zwłaszcza 3 DES (znane również jako triple DES), ma bardzo duży współczynnik cykli/bajtów. W związku z tym nie jest zaskoczeniem, że odciążenie protokołu IPSec na sprzęt karty sieciowej dało 30% wzrost wydajności w testach bezpieczeństwa Internetu i VPN.
Ulepszanie moderowania przerwań
Prosta karta sieciowa generuje przerwanie sprzętowe na hoście po nadejściu pakietu lub w celu zasygnalizowania ukończenia żądania wysłania pakietu. Opóźnienie przerwania i wynikowe efekty zmiany pamięci podręcznej dodają obciążenie do ogólnej wydajności sieci. W wielu scenariuszach (na przykład duże użycie systemu lub duży ruch sieciowy) najlepiej zmniejszyć koszt przerwania sprzętu, przetwarzając kilka pakietów dla każdego przerwania.
W przypadku znacznych obciążeń sieciowych zmierzono poprawę wydajności przepływności nawet o 9% w porównaniu do obciążeń intensywnie korzystających z sieci. Jednak dostrajanie parametrów moderowania przerwań wyłącznie w celu poprawy przepustowości może skutkować pogorszeniem wydajności czasu odpowiedzi. Aby zachować optymalne ustawienia i dostosować je do różnych obciążeń, najlepiej jest zezwolić na dynamiczne dostosowywanie parametrów zgodnie z opisem w dalszej części tego artykułu.
Wydajne korzystanie z magistrali PCI
Jednym z najważniejszych czynników wydajności sprzętu karty sieciowej jest sposób efektywnego korzystania z magistrali PCI. Ponadto wydajność DMA karty sieciowej wpływa na wydajność wszystkich kart PCI, które znajdują się w tej samej magistrali PCI. Podczas optymalizowania użycia PCI należy rozważyć następujące wytyczne:
Usprawnij transfery DMA przez agregowanie stron docelowych w odpowiednich przypadkach.
Zmniejsz obciążenie protokołu PCI, wykonując funkcję DMA w dużych fragmentach (co najmniej 256 bajtów). Jeśli to możliwe, synchronizuj przepływ danych tak, aby całe pakiety zostały przesłane w jednej transakcji PCI. Należy jednak wziąć pod uwagę sposób przeniesienia. Na przykład nie czekaj na nadejście wszystkich danych przed zainicjowaniem transferów, ponieważ oczekiwanie zwiększy opóźnienie i zużywa dodatkowe miejsce buforu.
Lepiej jest uzupełnić transfer pakietów DMA dodatkowymi bajtami, niż wymagać krótkiego dodatkowego transferu do „oczyszczenia” poprzez przesyłanie ostatnich bajtów pakietu.
Użyj operacji odczytu pamięci, odczytu linii pamięci i wielokrotnego odczytu pamięci zgodnie ze specyfikacją PCI.
Sprzęt interfejsu magistrali karty sieciowej powinien wykrywać ograniczenia w kontrolerze pamięci hosta i odpowiednio dostosować zachowanie. Na przykład sprzęt interfejsu magistrali karty sieciowej powinien wykrywać ograniczenia wstępnego pobierania kontrolera pamięci w odczytach pamięci DMA i czekać na krótki okres przed ponownym podjęciem próby transakcji. Sprzęt powinien wykryć nadmierne ponawianie prób w części karty sieciowej i zwiększyć czas przed pierwszym ponowieniu próby w przyszłych transakcjach po odcięciu przez hosta. Nie ma sensu w dalszym ciągu przesyłać transakcji do kontrolera pamięci, gdy jesteś pewny, że nadal jest zajęty pobieraniem kolejnego zestawu danych.
Zminimalizuj wstawianie stanów oczekiwania, zwłaszcza podczas transferów danych. Lepiej jest przekazać magistralę i pozwolić innemu adapterowi PCI, który używa magistrali, wykonać zadanie, jeśli ma zostać wstawionych więcej niż jeden lub dwa stany oczekiwania.
Użyj I/O mapowanego do pamięci zamiast programowanych operacji we/wy. Dotyczy to również sterowników.
Obsługa ramek jumbo
Obsługa większych maksymalnych jednostek transmisji (MTU), a tym samym większych rozmiarów ramek, w szczególności ramek Jumbo, zmniejsza obciążenie stosu sieciowego poniesione na bajt. Został zmierzony wzrost przepływności TCP o 20%, gdy jednostka MTU została zmieniona z 1514 na 9000. Ponadto uzyskuje się znaczne zmniejszenie wykorzystania procesora CPU z powodu mniejszej liczby wywołań ze stosu sieciowego do sterownika sieciowego.