New - ENA Express: Improved network latency and performance per flow in EC2

14 grudnia 2022

To oczywiste, że zawsze możesz doskonale wykorzystać całą dostępną przepustowość sieci i wydajność sieci.

Twórcy zrobili wszystko, co w ich mocy, aby Ci to zapewnić. Z biegiem lat przepustowość sieci wzrosła z 250 Mb/s w oryginalnej instancji m1 do 200 Gb/s w najnowszych instancjach m6in. Oprócz czystej przepustowości wprowadzono również zaawansowane funkcje sieciowe, w tym ulepszone funkcje sieciowe, elastyczne karty sieciowe (ENA) oraz (dla ściśle powiązanych obciążeń HPC) elastyczne karty sieciowe (EFA).

Poznaj ENA Express

Dziś twórcy AWS uruchamiają ENA Express. Opierając się na protokole Scalable Reliable Datagram (SRD), który już obsługuje adaptery Elastic Fabric, ENA Express zmniejsza opóźnienie przepływów ruchu w P99 nawet o 50%, a opóźnienie P99.9 nawet o 85% (w porównaniu z TCP), jednocześnie zwiększając maksymalną przepustowość pojedynczego przepływu od 5 Gbps do 25 Gbps. Podsumowując, otrzymujesz znacznie większą przepustowość na przepływ i znacznie mniejszą zmienność.

Możesz włączyć ENA Express na nowych i istniejących ENA i od razu skorzystać z tej wydajności dla ruchu TCP i UDP między instancjami c6gn działającymi w tej samej strefie dostępności.

Użycie ENA Express

Autorzy użyli m pary instancji c6gn do skonfigurowania i przetestowania ENA Express. Po uruchomieniu instancji użyto konsoli zarządzania AWS, aby włączyć ENA Express dla obu instancji. Teraz znajdź każdy ENI, wybierz go, a następnie wybierz Zarządzaj ENA Express z menu Actions:

ENA Express

Włącz ENA Express i ENA Express UDP i kliknij Zapisz:

ENA Express

Następnie ustaw maksymalną jednostkę transmisji (MTU) na 8900 w obu przypadkach:

$ sudo /sbin/ifconfig eth0 mtu 8900

Zainstaluj iperf3 na obu instancjach i uruchom pierwszą w trybie serwera:

$ iperf3 -s
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------

Następnie uruchom drugi w trybie klienta i obserwuj wyniki:

$ iperf3 -c 10.0.178.46
Connecting to host 10.0.178.46, port 5201
[  4] local 10.0.187.74 port 35622 connected to 10.0.178.46 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  2.80 GBytes  24.1 Gbits/sec    0   1.43 MBytes
[  4]   1.00-2.00   sec  2.81 GBytes  24.1 Gbits/sec    0   1.43 MBytes
[  4]   2.00-3.00   sec  2.80 GBytes  24.1 Gbits/sec    0   1.43 MBytes
[  4]   3.00-4.00   sec  2.81 GBytes  24.1 Gbits/sec    0   1.43 MBytes
[  4]   4.00-5.00   sec  2.81 GBytes  24.1 Gbits/sec    0   1.43 MBytes
[  4]   5.00-6.00   sec  2.80 GBytes  24.1 Gbits/sec    0   1.43 MBytes
[  4]   6.00-7.00   sec  2.80 GBytes  24.1 Gbits/sec    0   1.43 MBytes
[  4]   7.00-8.00   sec  2.81 GBytes  24.1 Gbits/sec    0   1.43 MBytes
[  4]   8.00-9.00   sec  2.81 GBytes  24.1 Gbits/sec    0   1.43 MBytes
[  4]   9.00-10.00  sec  2.81 GBytes  24.1 Gbits/sec    0   1.43 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  28.0 GBytes  24.1 Gbits/sec    0             sender
[  4]   0.00-10.00  sec  28.0 GBytes  24.1 Gbits/sec                  receiver

Raporty sterownika ENA dotyczące metryk, które możesz przejrzeć, aby potwierdzić użycie SRD:

ethtool -S eth0 | grep ena_srd
     ena_srd_mode: 3
     ena_srd_tx_pkts: 25858313
     ena_srd_eligible_tx_pkts: 25858323
     ena_srd_rx_pkts: 2831267
     ena_srd_resource_utilization: 0

Metryki działają w następujący sposób:

  • ena_srd_mode wskazuje, że SRD jest włączony dla TCP i UDP.
  • ena_srd_tx_pkts oznacza liczbę pakietów przesłanych przez SRD.
  • ena_srd_eligible_pkts oznacza liczbę pakietów, które kwalifikowały się do transmisji przez SRD. Pakiet kwalifikuje się do SRD, jeśli funkcja ENA-SRD jest włączona na obu końcach połączenia, oba połączenia znajdują się w tej samej strefie dostępności, a pakiet korzysta z protokołu UDP lub TCP.
  • ena_srd_rx_pkts oznacza liczbę pakietów odebranych przez SRD.
  • ena_srd_resource_utilization oznacza procent przydzielonych zasobów karty sieciowej Nitro, które są w użyciu i jest proporcjonalny do liczby otwartych połączeń SRD. Jeśli ta wartość stale zbliża się do 100%, uzasadnione może być skalowanie do większej liczby wystąpień lub skalowanie do większego rozmiaru wystąpienia.

Warto wiedzieć

Oto kilka rzeczy, które należy wiedzieć o ENA Express i SRD:

Access – użyto Management Console do włączenia i przetestowania ENA Express; Dostępna jest również obsługa CLI, API, CloudFormation i CDK.

Fallback – Jeśli pakiet TCP lub UDP nie kwalifikuje się do transmisji przez SRD, zostanie po prostu przesłany w zwykły sposób.

UDP – SRD wykorzystuje wiele ścieżek sieciowych i „rozpyla” na nich pakiety. Zwykle stanowiłoby to wyzwanie dla aplikacji, które oczekują, że pakiety będą docierać mniej więcej we właściwej kolejności, ale ENA Express pomaga, ustawiając pakiety UDP z powrotem w kolejności przed dostarczeniem ich do użytkownika, tym samym odciążając aplikację. Jeśli zbudowałeś własną warstwę niezawodności przez UDP lub jeśli Twoja aplikacja nie wymaga, aby pakiety docierały w kolejności, możesz włączyć ENA Express dla TCP, ale nie dla UDP.

Instance Types and Sizes – twórcy wprowadzają obsługę 16xlarge instancji c6gn, z dodatkowymi rodzinami i rozmiarami instancji w trakcie prac.

Resource Utilization – jak wspomniano powyżej, ENA Express wykorzystuje niektóre zasoby karty Nitro do przetwarzania pakietów. Przetwarzanie to dodaje również kilka mikrosekund opóźnienia na przetworzony pakiet, a także ma umiarkowany, ale wymierny wpływ na maksymalną liczbę pakietów, które dana instancja może przetworzyć na sekundę. W sytuacjach, w których wysokie szybkości pakietów są połączone z małymi rozmiarami pakietów, ENA Express może nie być odpowiedni. We wszystkich innych przypadkach możesz po prostu włączyć SRD, aby cieszyć się wyższą przepustowością na przepływ i stałym opóźnieniem

Pricing – Nie ma dodatkowych opłat za korzystanie z ENA Express.

Regions – ENA Express jest dostępna we wszystkich komercyjnych regionach AWS.

Wszystko na temat SRD

Oto kilka świetnych i wartościowych zasobów, które pomogą Ci dowiedzieć się na ten temat więcej:

A Cloud-Optimized Transport for Elastic and Scalable HPC – w tym dokumencie dokonano przeglądu wyzwań pojawiających się podczas próby obsługi ruchu HPC w sieci opartej na protokole TCP i zwrócono uwagę, że zmienność może mieć głęboki wpływ na wydajność skalowania, i zawiera zwięzły przegląd SRD:

Skalowalny, niezawodny datagram (SRD) jest zoptymalizowany pod kątem hiperskalowych centrów danych: zapewnia równoważenie obciążenia na wielu ścieżkach i szybkie przywracanie po utracie pakietów lub awarii łącza. Wykorzystuje standardową funkcjonalność ECMP na standardowych przełącznikach Ethernet i omija jego ograniczenia: nadawca kontroluje wybór ścieżki ECMP poprzez manipulowanie hermetyzacją pakietów.

In the Search for Performance, There’s More Than One Way to Build a Network – ten wpis na blogu z 2021 r. zawiera przegląd decyzji twórców o zbudowaniu adaptera Elastic Fabric i znajdziesz w nim kilka ważnych danych (i fajną grafikę), aby pokazać wpływ utraty pakietów na ogólną wydajność aplikacji. Jedną z interesujących rzeczy w SRD jest to, że śledzi dostępność i wydajność wielu ścieżek sieciowych między nadajnikiem a odbiornikiem i rozdziela pakiety na maksymalnie 64 ścieżki jednocześnie, aby wykorzystać jak największą przepustowość i szybkie odzyskanie w przypadku utraty pakietu.

źródło:AWS

Case Studies
Referencje

Bardzo profesjonalne podejście, niesamowicie szybki czas reakcji i bardzo miła obsługa sprawiły, że na pewno podejmiemy jeszcze współpracę. 

Marcin Krzaczkowski
Założyciel Automa.Net
W skrócie o nas
Specjalizujemy się w dostarczaniu rozwiązań IT w obszarach projektowania infrastruktury serwerowej, wdrażania chmury obliczeniowej, opieki administracyjnej i bezpieczeństwa danych.