Ekscytujący świat Rust + procesory ARM
Published: 2024-02-20 13:11:05

AWS ogłosił, że będzie oferować jeszcze szybsze i bardziej wydajne instancje Graviton 3 oparte na architekturze ARM, co oznacza, że nadszedł czas, aby firmy zaczęły planować swoją strategię migracji. Uruchamianie aplikacji na systemach ARM zwiększa wydajność, zapewniając lepszą wydajność w niższej cenie. Zoptymalizowaliśmy wydajność naszych systemów o krok dalej, migrując nasze aplikacje do języka Rust. Rust to język programowania, który staje się coraz bardziej popularny ze względu na swoją wydajność i bezpieczeństwo. Z biznesowego punktu widzenia przekłada się to na niższe koszty operacyjne w połączeniu z niższymi kosztami utrzymania.

Zrzut ekranu pokazuje wykorzystanie procesora przez aplikację Rust migrującą z X86-64 do ARM64. Na wykresie widać moment, w którym kontenery zaczęły raportować użycie CPU na nowych procesorach ARM. Jest to znacząca zmiana. Obciążenie to aplikacja internetowa Rust API o wysokiej współbieżności, która obsługuje miliony użytkowników.

![Graph showing CPU usage by container decreasing over time](https://www.pubnub.com/cdn/3prze68gbwl1/3GPHqHEE8BrS2itTVZH0UO/90c45e13498b206afbf892e39cc72a8d/Screenshot_2023-05-03_at_15.21.59.png)

Co to jest procesor ARM?
------------------------

Zazwyczaj myślimy o procesorach takich jak AMD lub Intel. Procesor ARM to procesor ogólnego przeznaczenia, który jest używany w wielu różnych urządzeniach, takich jak smartfony, tablety, Raspberry Pi, mikrokontrolery, płyty rozwojowe, a nawet niektóre laptopy. Procesory ARM są znane ze swojej energooszczędności i niskiego zużycia energii, co czyni je atrakcyjną opcją dla firm budujących systemy wbudowane, które chcą zaoszczędzić na kosztach energii. AWS oferuje niższą stawkę godzinową jako ofertę podążającą za kosztami, aby zachęcić do korzystania z tych nowych wydajnych procesorów, przyczyniając się do rozwoju IoT i wysokowydajnego ekosystemu.

![Chart showing ARM CPU usage at 0.00223 compared with X86-64 at 0.00706](https://www.pubnub.com/cdn/3prze68gbwl1/2kC7xyDDUfXoCYYzGpb2oT/20abce8acdb4e57c10eb157c70ed67e8/Screenshot_2023-05-03_at_15.22.07.png)

Porównując wydajność ARM64 z X86-64 można zauważyć zauważalną różnicę. Jeśli to nie wystarczy, możemy pójść jeszcze dalej. Dodając docelowe optymalizatory procesora, możemy wbudować dodatkowe instrukcje do pliku binarnego, który wykorzystuje nowsze instrukcje procesora architektury ARM, ulepszając toolchain i kompatybilność. Zachowamy to na późniejszy post. Tymczasem wyniki, które tutaj pokazujemy, są reprezentatywne dla ogólnych celów ARM64.

Porozmawiajmy teraz o Rust.
---------------------------

Rust to język programowania typu open source, który ma żywą i zaangażowaną społeczność GitHub, która dba o jego wydajność i bezpieczeństwo. Oznacza to, że kod Rust działa szybko i nie ma tylu błędów ani luk w zabezpieczeniach, co inne języki. Programiści szczególnie lubią język Rust, ponieważ jest on dobrze przystosowany do programowania systemowego, co oznacza, że świetnie nadaje się do tworzenia takich rzeczy jak systemy operacyjne, sterowniki urządzeń i inne oprogramowanie niskiego poziomu. Ze względu na ścisłe sprawdzanie bezpieczeństwa pamięci pod kątem stabilności, Rust jest również atrakcyjny do tworzenia aplikacji na dużą skalę. Obniżenie kosztów posiadania dzięki zmniejszeniu liczby błędów, choć można powiedzieć, że Rust jest dość trudny do debugowania. Microsoft przeanalizował najczęstsze rodzaje błędów. Według nich ponad 70% błędów było bezpośrednio związanych z błędami zarządzania pamięcią. Rust oferuje mechanikę bezpieczeństwa pamięci, która wyłapuje te błędy w czasie kompilacji.

Dlaczego więc Rust jest dobrym wyborem do migracji na procesory ARM? Rust można skompilować do działania na niemal każdej platformie docelowej, w tym ARM. Systemy oparte na ARM różnią się od tradycyjnych systemów opartych na x86, co oznacza, że oprogramowanie, które działa dobrze na systemie x86, może nie działać tak dobrze na systemie ARM. Wydajność i zdolność Rust do dobrego działania na procesorach ARM sprawiają, że jest to doskonały wybór dla firm, które chcą przenieść swoje obciążenia do systemów opartych na ARM. Widzieliśmy wiele udanych migracji do Rust. Uruchamiając aplikację Rust na ARM, odnotowaliśmy 40% poprawę wydajności procesora.

CI/CD i podwójna architektura
-----------------------------

Aby zapewnić płynny proces migracji, ważne jest przestrzeganie najlepszych praktyk w zakresie wdrażania. Zdecydowaliśmy się włączyć potok podwójnej architektury do naszego systemu CI/CD. Pozwala nam to określić zarówno Linux AMD64, jak i Linux ARM64 na platformach Docker. Jest to świetne rozwiązanie, ponieważ naszą warstwą orkiestracji jest Kubernetes.

![Code showing value = arm in a kubernetes cluster](https://www.pubnub.com/cdn/3prze68gbwl1/BCDo8QiUJmGvVpqzz3so8/ddc0250662b4456b269b6f2b34f56cc5/Screenshot_2023-05-03_at_15.22.15.png)

Używamy konfiguracji YAML dla selektorów węzłów, aby określić węzły ARM do wdrożenia i uwzględnić tolerancje YAML w manifeście wdrożenia. Nie odbywa się to automatycznie. Nasz zespół SRE z powodzeniem opracował potok CI/CD o podwójnej architekturze, który zapewnia obrazy X86-64 i ARM64 w tandemie. Ponadto możemy kierować grupy węzłów podczas wdrażania naszych aplikacji za pomocą adnotacji YAML zaimplementowanej przez zespół. Zespół SRE sprawił, że wdrażanie w grupach węzłów ARM stało się bezproblemowe dla naszych zespołów ds. rozwoju produktów. Pozwoli nam to na migrację naszych obciążeń do grup węzłów ARM poprzez proste konfiguracje. Cieszymy się, że możemy z tego skorzystać, oznacza znaczący postęp w czasie wykonywania i automatyzacji w naszych procesach rozwoju.

Rust + ARM to wiodąca w branży para technologiczna
--------------------------------------------------

Rust został pierwotnie opracowany przez Mozillę w celu usprawnienia przeglądania stron internetowych. Procesory ARM są częściej wykorzystywane w ekosystemach urządzeń konsumenckich, w tym smartwatchach, a nawet niektórych samochodach, co czyni je popularnymi wśród zespołów zajmujących się rozwojem wbudowanym. Możemy łączyć i wykorzystywać wiele technologii, aby uzyskać godne uwagi korzyści. To niesamowite, jak technologia rozwija się i zmienia otaczający nas świat.

Obecnie, aby uzyskać maksymalną wydajność i niezawodność podczas wdrażania aplikacji na dużą skalę, połączenie Rust + ARM jest bezkonkurencyjne w wielu przypadkach użycia w czasie rzeczywistym. Migracja do procesorów ARM może zapewnić znaczne oszczędności i lepszą wydajność. Wykorzystując Rust i stosując najlepsze praktyki wdrażania, firmy mogą zapewnić płynne przejście na tę nową technologię. Czy jesteś gotowy, aby zrobić krok naprzód i zacząć odkrywać ekscytujący świat Rust i procesorów ARM?

Jak PubNub może ci pomóc?
=========================

Ten artykuł został pierwotnie opublikowany na [PubNub.com](https://www.pubnub.com/blog/the-exciting-world-of-rust-arm-processors/)

Nasza platforma pomaga programistom tworzyć, dostarczać i zarządzać interaktywnością w czasie rzeczywistym dla aplikacji internetowych, aplikacji mobilnych i urządzeń IoT.

Fundamentem naszej platformy jest największa w branży i najbardziej skalowalna sieć przesyłania wiadomości w czasie rzeczywistym. Dzięki ponad 15 punktom obecności na całym świecie obsługującym 800 milionów aktywnych użytkowników miesięcznie i niezawodności na poziomie 99,999%, nigdy nie będziesz musiał martwić się o przestoje, limity współbieżności lub jakiekolwiek opóźnienia spowodowane skokami ruchu.

Poznaj PubNub
-------------

Sprawdź [Live Tour](https://www.pubnub.com/tour/introduction/), aby zrozumieć podstawowe koncepcje każdej aplikacji opartej na PubNub w mniej niż 5 minut.

Rozpocznij konfigurację
-----------------------

Załóż [konto](https://admin.pubnub.com/signup/) PubNub, aby uzyskać natychmiastowy i bezpłatny dostęp do kluczy PubNub.

Rozpocznij
----------

[Dokumenty](https://www.pubnub.com/docs) PubNub pozwolą Ci rozpocząć pracę, niezależnie od przypadku użycia lub [zestawu SDK](https://www.pubnub.com/docs).