Jak zmaksymalizować wydajność instancji EC2

11

Uwaga: Jestem programistą typu front-end w świecie serwerów.

Cześć chłopaki. Mam instancję serwera na EC2 c5d.9xlarge, której specyfikacje to:

  • System: Ubuntu 18.04
  • vCPU: 36 wątków / rdzeni
  • Pamięć: 72 GB
  • Pamięć: 900 GB NVMe SSD
  • Dedykowana przepustowość EBS: 7 000 Mb / s
  • Wydajność sieci: 10 Gb / s

Scenariusz: używam tego serwera do przesyłania dużych filmów (4K, 1+ godz.) I przetwarzania ich przy użyciu FFMPEG, ale w porównaniu do mojego poprzedniego serwera UpCloud z 12 rdzeniami i 48 GB pamięci RAM, ten serwer EC2 zajmuje 1,5 razy dłużej na przesyłanie i przetwarzanie , co moim zdaniem nie powinno tak być.

Pytanie: Jak zmaksymalizować wydajność tego, za co płacę?

Martavis P.
źródło
Powinieneś spojrzeć na koszt elastycznego transkodera AWS, aby sprawdzić, czy zadziała lepiej.
Tim
Dzięki @Tim. Widziałem to jakiś czas temu, ale tak naprawdę mam jeszcze kilka połączeń na tym serwerze, więc pomyślałem, że je połączę.
Martavis P.

Odpowiedzi:

19

Twój c5d.9xlargejest wyposażony w 900GB Instance Storage (aka ulotne pamięci ) - używasz, że do przechowywania i przetwarzania plików? Podczas gdy Twoja instancja ma część dedykowanego pasma EBS, pamięć masowa SSD w instancji będzie nadal znacznie szybsza . Sugeruję użycie tego dla wszystkich plików źródłowych i tymczasowych i zapisywanie wyników tylko w EBS.

Istnieją jednak pewne zastrzeżenia dotyczące przechowywania instancji:

  1. Musisz go sformatować i zamontować , zanim będzie można go użyć. Więcej informacji można znaleźć w tej odpowiedzi: Automatycznie montuj pamięć instancji SSD na AWS EC2 w Ubuntu 16.04

  2. Zawartość jest usuwana po zatrzymaniu i ponownym uruchomieniu instancji. Przetrwa restart, ale nie stop / start.


Aktualizacja: Domyślnie dysk SSD nie jest zamontowany - aby skorzystać z niego, należy wykonać czynności opisane w powyższej połączonej odpowiedzi. W standardowej konfiguracji po uruchomieniu będziesz używać EBS, który jest wolniejszy niż SSD.

Następnie musisz upewnić się, że faktycznie z niego korzystasz - ustaw katalog wysyłania , pracy i tymczasowy na ten punkt montowania SSD.

Lub jeszcze lepiej - ponieważ masz 72 GB pamięci RAM - utwórz dysk RAM i użyj go do plików tymczasowych. Będzie to nawet szybsze niż SSD (jeśli pliki się zmieszczą).

Najpierw zignoruj ​​szybkość przesyłania i zoptymalizuj przetwarzanie - prześlij plik do EBS i określ czas przetwarzania, następnie prześlij na dysk SSD i określ czas, a następnie na dysk RAM i określ czas przetwarzania. Zobacz, jak bardzo się różnią.

Na szybkość przesyłania wpływa wiele aspektów, w tym odległość i opóźnienie między tobą a regionem AWS, do którego przesyłasz. Czy korzystasz z regionu AWS blisko Ciebie?

Re wydajność procesora - masz 36 dostępnych procesorów, jednak każdy rdzeń może być wolniejszy niż rdzenie poprzedniej maszyny 12-rdzeniowej. Zależy to od architektury procesora i szybkości zegara. Jeśli jednak możesz równolegle przetwarzać wideo w 36 wątków, powinieneś być lepiej w tym przypadku. Jeśli korzystasz z jednego wątku, możesz nie uzyskać pożądanej wydajności.

Mam nadzieję, że to pomoże :)

MLu
źródło
Tak, dysk twardy służy do przechowywania podczas przetwarzania plików, a pliki mają temperaturę tymczasową aż do zakończenia procesu. Pliki wynikowe są wysyłane do S3. Właściwie nie wiem, czy dysk SSD jest zamontowany. Zaczynam zdawać sobie sprawę, że AWS nie używa specyfikacji jako ustawienia domyślnego. Czy zamontowanie dysku SSD przyspiesza przesyłanie? Kontynuacja: jakieś pomysły, w jaki sposób mogę maksymalnie wykorzystać dozwoloną specyfikację procesora?
Martavis P.
@MartavisP. dodał kilka aktualizacji do odpowiedzi.
MLu
Wow, bardzo dziękuję za informację! Przestudiuję i zastosuję to, co napisałeś.
Martavis P.
1
Świetna odpowiedź. Musisz przeprowadzić test porównawczy, aby znaleźć wąskie gardło, podzielić je na czas przesyłania, czas przetwarzania, użycie procesora, wykorzystanie EBS / sieci itp. Może to być tak proste, jak masz większe opóźnienia na tym serwerze, więc przesyłanie jest wolniejsze, które można obejść, przesyłając dane w równoległych wątkach do EC2 / S3. Netflix ma ten film na youtube, który może być interesujący, ale wykonaj kroki diagnostyczne, zanim przejdziesz do tego rodzaju szczegółów.
Tim
1

Czy jest jakiś zakres, aby spojrzeć na alternatywy? Za cenę c5d.9xlargenawet, jeśli otrzymujesz znaczną zniżkę, na rynku serwerów dedykowanych możesz mieć kilka równoważnych lub lepszych maszyn

Korzystanie z chmury dla tego rodzaju problemu o skali pionowej jest przepisem na przepłacanie i, jak widzieliście, niską wydajność

Przepraszam za brak odpowiedzi, ale nie mam wystarczającej liczby przedstawicieli, aby móc komentować

Luke F.
źródło
To była dla mnie zniżka na przejście z UpCloud. Więc co polecasz?
Martavis P.
1
Wygląda na to, że ta sama moc obliczeniowa w chmurze jest zawsze około czterokrotnie wyższa niż cena miesięcznego serwera wynajmowanego na dowolnym losowym serwerze internetowym. Następnie są rabaty dla przedsiębiorstw (~ 30%) i możesz rezerwować przez 3 lata (2x taniej, ale teraz znacznie gorzej niż ten losowy hosting). A ten miesięcznie wynajmowany serwer zwykle wydaje się być 1/12 ceny bezpośredniego zakupu sprzętu. Tak przynajmniej widzę. Więc w chmurze kupujesz sprzęt co 3 miesiące, ale nie jesteś jego właścicielem.
usr
Tak, to dobra uwaga, ale musisz pamiętać, że płacisz za utrzymanie i wygodę, jak wszystko w życiu. Wolę pozwolić AWS być moim mechanikiem, niż spędzać dni próbując dowiedzieć się, jak naprawić awarię serwera. To dobra wiedza, ale ostatecznie moja kariera dotyczy kodu, więc chmura działa dla mnie.
Martavis P.