Udostępnij za pośrednictwem


Omówienie wydajności protokołu TCP/IP

Uwaga 16.

Ten artykuł znajduje się w 3-częściowej serii. Możesz przejrzeć część 2: problemy z wydajnością sieci tcp/IP i część 3: Znane problemy z wydajnością protokołu TCP/IP.

Wydajność protokołu TCP/IP (Transmission Control Protocol/Internet Protocol) jest porównaniem. Porównanie powinno być przeprowadzane z identycznymi punktami końcowymi pod względem sprzętu, ścieżki sieciowej i systemu operacyjnego. Rzeczywista wydajność jest inna, ponieważ zaangażowanych jest wiele czynników, co może powodować wąskie gardło. Te czynniki to często podstawowa sieć, projekt protokołu TCP i rzeczywista szybkość przesyłania we/wy magazynu.

Przeczytaj więcej na temat dostrajania wydajności, aby ustawić najlepszą konfigurację punktów końcowych.

Automatyczne dostrajanie okien odbierania TCP to funkcja zdefiniowana przez aplikację służącą do skalowania połączenia w górę w celu korzystania z przepustowości w sieciach o dużych opóźnieniach. Jeśli na przykład protokół TCP jest skonfigurowany do normalnego używania automatycznego dostrajania i jeśli aplikacja ma wystarczająco dużo buforu zdefiniowanego dla okna TCP, system operacyjny będzie skalować protokół TCP do maksymalnego rozmiaru. Ta funkcja jest jednak przeznaczona dla sieci o większych opóźnieniach. W przypadku sieci o małych opóźnieniach nie ma takiego wymagania, ponieważ nie będzie wielu segmentów na bieżąco (na przykład w infrastrukturze sieciowej).

W przypadku sieci o dużym opóźnieniu z oknem TCP, które nie jest skalowane do maksymalnego naraz, istnieją algorytmy, takie jak SZEŚCIENNA, NewReno i Compound TCP , aby określić produkt opóźnienia przepustowości (BDP) i odpowiednio skalować okno. System operacyjny Windows przypisuje algorytm przeciążenia do każdego utworzonego gniazda.

Ustawienia PROTOKOŁU TCP są wstępnie zdefiniowane w systemie Windows 10. Użyj polecenia cmdlet Get-NetTCPSettings, aby uzyskać ustawienia protokołu TCP i użyć polecenia cmdlet Get-NetTCPConnection, aby wyświetlić właściwości połączenia TCP, takie jak lokalny lub zdalny adres IP, lokalny lub zdalny port i stan połączenia.

Poniżej przedstawiono wskazówki dotyczące zwiększenia przepływności:

  • Upewnij się, że nie występują żadne podstawowe problemy z siecią (utrata pakietów).
  • Włącz zaawansowane właściwości karty sieciowej dla funkcji wydajności (takich jak duże ramki, RSS/VMQ, funkcje odciążania i RSC) z wyjątkiem sytuacji, gdy występuje podstawowy problem ze zgodnością sieci lub na potrzeby rozwiązywania problemów.
  • Upewnij się, że protokół TCP jest skonfigurowany w celu automatycznego dostrajania do normalnego poziomu.
  • Użyj analizy monitora wydajności, aby upewnić się, że nie ma wąskiego gardła dla procesora lub magazynu.
  • Wybierz funkcje zabezpieczeń na podstawie rzeczywistych wymagań organizacji.
  • Utwórz punkt odniesienia.

Narzędzie do testowania przepływności TCP

Aby uzyskać najwyższą możliwą przepływność dla określonego sprzętu, należy dostosować czynniki wydajności. Upewnij się, że nie występują żadne podstawowe problemy z siecią (utrata pakietów). Użyj narzędzia NTttcp.exe lub ctsTraffic.exe, aby przetestować przepływność. Zapoznaj się z tematem Performance Tools for Network Workloads (Narzędzia wydajności dla obciążeń sieciowych).

Wąskie gardła przepływności TCP

Nie używaj monitora sieciowego ani nie używaj dzienników na poziomie pakietów sieciowych podczas testów przepływności protokołu TCP. Filtry monitorowania specyfikacji NDIS (Network Driver Interface Specification) dodają opóźnienie dla nadawcy i odbiorników za każdym razem, gdy pakiet jest rejestrowany. Ta operacja wymaga zasobów procesora CPU i generuje wiele operacji we/wy magazynu. Wydajność spada, gdy są pobierane dzienniki na poziomie pakietów, ponieważ protokół TCP próbuje odzyskać sprawność po utracie pakietów.

Dodawanie zabezpieczeń ma własne problemy z kosztami i wydajnością. Protokoły zabezpieczeń, takie jak zabezpieczenia protokołu internetowego (IPsec), mają dodatkowe wymagania dotyczące przetwarzania. Porównanie ochrony danych z integralnością danych powinno być preferowane w przypadku mniejszego kosztu przetwarzania w trybie integralności protokołu IPsec. Oprogramowanie zabezpieczające ma również ogromny koszt przetwarzania pakietów, co spowoduje wolniejsze dane wyjściowe.

Jeśli przetestowana wydajność nie jest zgodna z oczekiwaniami, weź dzienniki zgodnie z definicją w licznikach wydajności związanych z siecią.

Po sprawdzeniu problemów z wydajnością protokołu TCP sprawdź protokoły skojarzone z wyższą warstwą, takie jak protokoły systemu plików (blok komunikatów serwera (SMB) lub system plików sieciowych (NFS). Te protokoły wymagają zasobów procesora i operacji we/wy dysku. Niska szybkość jest spowodowana przez uszkodzony sterownik lub sprzęt, kolejkę wywołania procedury odroczonej (DPC) lub/i wolne operacje we/wy dysku. Dowiedz się, który składnik w systemie operacyjnym powoduje wysokie elementy DPC, jest trudne, ponieważ wymaga to analizy przy użyciu rejestrowania Xperf/Windows Performance Recorder (WPR). Znajdowanie problemów z spowolnieniem związanych z dyskiem jest stosunkowo łatwiejsze. Aby uzyskać więcej informacji, zobacz Badanie i dostrajanie wydajności dysku.

Podczas testu aplikacje testowe (aplikacje klienckie i serwerowe) można dostosować do użycia wielu wątków z wartościami buforu wystarczająco wysokimi, aby osiągnąć maksymalną przepływność. Jednak może to nie odzwierciedlać rzeczywistych warunków, ponieważ liczba wątków i bufor każdego wywołania interfejsu API może być ograniczona w oparciu o programowanie. Ponadto protokół warstwy aplikacji (SMB lub Common Internet File System ) ma własny bufor i optymalizację (Dostrajanie wydajności dla serwerów plików lub SMB: Przewodnik rozwiązywania problemów). Jeśli aplikacja nie działa zgodnie z oczekiwaniami w przypadku punktu odniesienia, skontaktuj się ze specjalistą ds. aplikacji, aby znaleźć wąskie gardło.

Jak utworzyć punkt odniesienia

Aby porównać bieżącą przepływność, należy utworzyć punkt odniesienia wydajności. Aby lepiej zrozumieć sieć, utwórz punkt odniesienia na początku wdrożenia.

Punkt odniesienia jest tworzony przez następujące główne kwestie:

  • Sieci źródłowe i docelowe
  • Opóźnienie i liczba przeskoku między tymi sieciami
  • Możliwości i konfiguracja procesora/interfejsu
  • Ramy czasowe testów (godziny pracy/godziny pracy/godziny pracy/godziny szczytu)
  • Wersje systemu operacyjnego
  • Wypychanie ściągnięcia i przepływności przepływności

Uwaga 16.

Utwórz punkt odniesienia z tymi samymi modelami serwera (taką samą liczbę kart interfejsu sieciowego i pojemności procesora), aby utrzymać moc obliczeniową prawie równą.

Obserwuj bufor i śledź liczbę sesji transportu utworzonych przez narzędzia do testowania. Cztery równoczesne sesje transportu TCP mogą oceniać użycie procesora CPU równomiernie z włączoną funkcją RSS.

Poniżej przedstawiono kroki mierzenia przepływności i tworzenia punktu odniesienia:

  1. Pobierz narzędzie ctsTraffic. Oto opis niektórych parametrów narzędzia ctsTraffic.

    Parametr Opis
    -listen:<IP/*> Ta opcja jest używana do nasłuchiwania portów na serwerach. Jeśli * zostanie określony, narzędzie ctsTraffic nasłuchuje wszystkich adresów IP dostępnych na tym komputerze. Na przykład -listen:*.
    -target:<IP> Ta opcja jest używana na klientach i określa adres IP serwera, na którym działa ctsTraffic.exe i jest w stanie nasłuchiwania. Na przykład -target:192.168.1.10.
    -pattern:pull Narzędzie CtsTraffic domyślnie używa wzorca wypychania. Oznacza to, że dane są wysyłane z klienta do serwera. Gdy ten przełącznik jest używany zarówno na kliencie, jak i serwerze, dane są odbierane na kliencie. Nie używaj tej opcji podczas wykonywania testu wypychania.
    -connections:<num> Ta opcja określa liczbę połączeń TCP. Gniazda TCP zostaną utworzone jednocześnie na podstawie klienta. Osiem jest często używanych, ponieważ kolejki RSS na kartach sieciowych w połowie poziomu to 8. Na przykład -connections:8.
    -iterations:<num> Ta opcja określa pomnożną liczbę połączeń w programie -connections:. Na przykład -iterations:10. W przypadku 10 iteracji klient będzie próbował łącznie 80 połączeń. Jeśli ta opcja nie zostanie określona, klient będzie nadal podejmować próby 8 połączeń do 1000 połączeń.
    -statusfilename:<filename.csc> Użyj tej opcji, aby opróżnić opcję poziomu konsoli 1 do pliku zgodnego .txt z programem Microsoft Excel.
    -connectionfilename:<filename.csv> Użyj tej opcji, aby opróżnić pełne szczegóły. Na przykład informacje o poziomie gniazda, takie jak czas potrzebny przez każde gniazdo do transferu danych. Możesz sprawdzić, czy istnieją jakiekolwiek błędy lub zaawansowane rozwiązywanie problemów z tą opcją.
    -consoleverbosity:<0|1|2|3> Ta opcja określa widok lub dane wyjściowe monitora podczas uruchamiania testu. Na przykład -consoleverbosity:1.
  2. Otwórz monitor zasobów po stronie odbieranej. Jeśli na przykład używasz -pattern:pullpolecenia , otwórz go na kliencie, w przeciwnym razie otwórz go na serwerze.

  3. Uruchom narzędzie ctsTraffic na serwerze i uruchom następujące polecenie:

    Ctstraffic.exe -listen:* -consoleverbosity:1 <-pattern:pull>
    

    Uruchomienie polecenia ctsTraffic po stronie serwera.

  4. Uruchom narzędzie ctsTraffic na kliencie i uruchom następujące polecenie:

    Ctstraffic.exe -target:<serverip> -consoleverbosity:1 <-pattern:pull> -connections:8 -iterations:10
    

    Uruchomienie polecenia ctsTraffic po stronie klienta.

  5. Upewnij się, że procesory po stronie odbierania są używane równomiernie. Jeśli tak nie jest, sprawdź problem z funkcją RSS, aby dowiedzieć się, która z nich nie działa zgodnie z oczekiwaniami.

    Szczegóły użycia procesora cpu po stronie odbieranej.

  6. Oblicz przepływność w bitach/sekundach zgodnie z wynikiem na kliencie. Zapoznaj się z przykładem na poniższym zrzucie ekranu:

    Wynik polecenia ctsTraffic po stronie klienta.

    W tym przykładzie przepływność wynosi prawie 19 Gb/s i jest obliczana w następujący sposób:

    (85 899 349 200 bajtów/36,678 sekund) * 8 = 18,735,885,097,33355 (bity/sekundę)

Następne kroki