Die spannende Welt von Rust und ARM-Prozessoren

PubNub Developer Relations - Feb 20 - - Dev Community

AWS hat angekündigt, dass es noch schnellere und leistungsfähigere Graviton 3 ARM-basierte Instances anbieten wird, was bedeutet, dass es für Unternehmen an der Zeit ist, ihre Migrationsstrategie zu planen. Die Ausführung Ihrer Anwendungen auf ARM-Systemen verbessert die Effizienz durch eine bessere Leistung zu einem niedrigeren Preis. Wir sind bei der Optimierung der Effizienz unserer Systeme noch einen Schritt weiter gegangen, indem wir unsere Anwendungen auf Rust migriert haben. Rust ist eine Programmiersprache, die sich aufgrund ihrer Effizienz und Sicherheit immer größerer Beliebtheit erfreut. Aus geschäftlicher Sicht bedeutet dies niedrigere Betriebskosten in Verbindung mit geringeren Wartungskosten.

Der Screenshot zeigt die CPU-Auslastung für eine Rust-Anwendung, die von X86-64 auf ARM64 migriert. Sie können in der Grafik den Moment erkennen, in dem die Container beginnen, die CPU-Auslastung auf den neuen ARM-Prozessoren zu melden. Dies ist eine bemerkenswerte Änderung. Bei der Arbeitslast handelt es sich um eine Rust-API-Webanwendung mit hoher Gleichzeitigkeit, die Millionen von Benutzern bedient.

Graph showing CPU usage by container decreasing over time

Was ist ein ARM-Prozessor?

Normalerweise denken wir an Prozessoren wie AMD oder Intel. Ein ARM-Prozessor ist eine Allzweck-CPU, die in vielen verschiedenen Geräten wie Smartphones, Tablets, Raspberry Pi, Mikrocontrollern, Entwicklungsboards und sogar in einigen Laptops verwendet wird. ARM-Prozessoren sind für ihre Energieeffizienz und ihren geringen Stromverbrauch bekannt, was sie zu einer attraktiven Option für Unternehmen macht, die eingebettete Systeme entwickeln und Energiekosten sparen möchten. AWS bietet einen niedrigeren Stundensatz als Anreiz für die Verwendung dieser neuen effizienten Prozessoren, und trägt damit zum IoT- und Hochleistungsökosystem bei.

Chart showing ARM CPU usage at 0.00223 compared with X86-64 at 0.00706

Vergleicht man die Effizienz von ARM64 mit der von X86-64, so ist ein deutlicher Unterschied zu erkennen. Wenn das noch nicht reicht, können wir noch einen Schritt weiter gehen. Durch das Hinzufügen von Ziel-CPU-Optimierern können wir zusätzliche Anweisungen in die Binärdatei einbauen, die die Vorteile neuerer ARM-Architektur-CPU-Anweisungen nutzen, und die Toolchain und Kompatibilität verbessern. Wir heben uns das für einen späteren Beitrag auf. In der Zwischenzeit sind die Ergebnisse, die wir hier zeigen, repräsentativ für allgemeine ARM64-Ziele.

Lassen Sie uns nun über Rust sprechen.

Rust ist eine Open-Source-Programmiersprache mit einer lebendigen und engagierten GitHub-Community, die sich dafür einsetzt, dass Rust effizient und sicher bleibt. Das bedeutet, dass Rust-Code schnell läuft und nicht so viele Bugs oder Sicherheitslücken aufweist wie andere Sprachen. Programmierer mögen Rust besonders, da es sich gut für die Systemprogrammierung eignet, d. h. für die Entwicklung von Betriebssystemen, Gerätetreibern und anderer Low-Level-Software. Aufgrund der strengen Stabilitätsprüfung der Speichersicherheit ist Rust auch für die Entwicklung umfangreicher Anwendungen attraktiv. Senkung der Betriebskosten durch Reduzierung von Fehlern, obwohl man sagen kann, dass Rust ziemlich schwierig zu debuggen ist. Microsoft hat die häufigste Art von Fehlern analysiert. Demnach stehen über 70 % der Bugs in direktem Zusammenhang mit Fehlern in der Speicherverwaltung. Rust bietet Speichersicherheitsmechanismen, die diese Fehler zur Kompilierzeit abfangen.

Warum ist Rust also eine gute Wahl für die Migration auf ARM-Prozessoren? Rust kann so kompiliert werden, dass es auf fast jeder Zielplattform läuft, auch auf ARM. ARM-basierte Systeme unterscheiden sich von traditionellen x86-basierten Systemen, was bedeutet, dass Software, die auf einem x86-System gut läuft, auf einem ARM-System möglicherweise nicht so gut läuft. Die Effizienz von Rust und seine Fähigkeit, auf ARM-Prozessoren gut zu laufen, machen es zu einer guten Wahl für Unternehmen, die ihre Arbeitslasten auf ARM-basierte Systeme migrieren möchten. Wir haben bereits mehrere erfolgreiche Migrationen auf Rust erlebt. Wenn wir die Rust-Anwendung auf ARM ausführen, sehen wir eine 40 %ige Verbesserung der CPU-Leistung.

CI/CD und duale Architektur

Um einen reibungslosen Migrationsprozess zu gewährleisten, ist es wichtig, Best Practices für die Bereitstellung zu befolgen. Wir haben uns entschieden, eine Dual-Architektur-Pipeline in unser CI/CD-System zu integrieren. Dadurch können wir sowohl Linux AMD64 als auch Linux ARM64 in den Docker-Plattformen angeben. Das ist großartig, da unsere Orchestrierungsschicht Kubernetes ist.

Code showing value = arm in a kubernetes cluster

Wir verwenden die YAML-Konfiguration für Knotenselektoren, um ARM-Knoten für die Bereitstellung zu spezifizieren und YAML-Toleranzen in das Bereitstellungsmanifest aufzunehmen. Dies geschieht nicht automatisch. Unser SRE-Team hat erfolgreich eine CI/CD-Pipeline für zwei Architekturen entwickelt, die X86-64- und ARM64-Images im Tandem bereitstellt. Außerdem können wir beim Deployment unserer Anwendungen mithilfe einer vom Team implementierten YAML-Anmerkung Knotengruppen anvisieren. Das SRE-Team hat die Bereitstellung auf ARM-Knotengruppen für unsere Produktentwicklungsteams nahtlos gemacht. Dies ermöglicht uns die Migration unserer Arbeitslasten auf ARM-Knotengruppen durch einfache Konfigurationen. Wir freuen uns, dies zu nutzen, was einen bedeutenden Fortschritt in der Laufzeit und Automatisierung innerhalb unserer Entwicklungsprozesse darstellt.

Rust + ARM ist das branchenführende Technologie-Paar

Rust wurde ursprünglich von Mozilla entwickelt, um das Webbrowsing zu verbessern. ARM-Prozessoren sind eher dafür bekannt, in Ökosystemen von Verbrauchergeräten, einschließlich Smartwatches und sogar einigen Autos, eingesetzt zu werden, was sie bei Teams, die eingebettete Entwicklung betreiben, beliebt macht. Wir können mehrere Technologien kombinieren und nutzen, um bemerkenswerte Vorteile zu erzielen. Es ist erstaunlich, wie sich die Technologie weiterentwickelt und die Welt um uns herum verändert.

Heute ist die Kombination aus Rust und ARM in vielen Echtzeit-Anwendungsfällen unschlagbar, wenn es um maximale Effizienz und Zuverlässigkeit bei der Bereitstellung von Anwendungen im großen Maßstab geht. Die Umstellung auf ARM-Prozessoren kann zu erheblichen Kosteneinsparungen und Leistungssteigerungen führen. Durch die Nutzung von Rust und die Einhaltung von Best Practices für die Bereitstellung können Unternehmen einen reibungslosen Übergang zu dieser neuen Technologie gewährleisten. Sind Sie also bereit, den Sprung zu wagen und die spannende Welt von Rust und ARM-Prozessoren zu erkunden?

Wie kann PubNub Ihnen helfen?

Dieser Artikel wurde ursprünglich auf PubNub.com veröffentlicht.

Unsere Plattform hilft Entwicklern bei der Erstellung, Bereitstellung und Verwaltung von Echtzeit-Interaktivität für Webanwendungen, mobile Anwendungen und IoT-Geräte.

Die Grundlage unserer Plattform ist das größte und am besten skalierbare Echtzeit-Edge-Messaging-Netzwerk der Branche. Mit über 15 Points-of-Presence weltweit, die 800 Millionen monatlich aktive Nutzer unterstützen, und einer Zuverlässigkeit von 99,999 % müssen Sie sich keine Sorgen über Ausfälle, Gleichzeitigkeitsgrenzen oder Latenzprobleme aufgrund von Verkehrsspitzen machen.

Erleben Sie PubNub

Sehen Sie sich die Live Tour an, um in weniger als 5 Minuten die grundlegenden Konzepte hinter jeder PubNub-gestützten App zu verstehen

Einrichten

Melden Sie sich für einen PubNub-Account an und erhalten Sie sofort kostenlosen Zugang zu den PubNub-Schlüsseln

Beginnen Sie

Mit den PubNub-Dokumenten können Sie sofort loslegen, unabhängig von Ihrem Anwendungsfall oder SDK

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .