Die ARM-Plattform galt bis vor einigen Jahren wegen des günstigen Preises als erste Wahl für Bastelprojekte und wegen des geringen Energiebedarfs als ideal für akkubetriebene Anwendungen wie Smartphones oder Tablets. Seit der Einführung des 64-Bit-Befehlssatzes im Jahr 2012 gab es etliche Versuche, ARM für (den) Server fit zu machen – doch erst jetzt kündigt sich ein Durchbruch an.
In ihrer Gesamtheit betrachtet ist die Geschichte der ARM-Prozessorplattform eine Erfolgsgeschichte: Was als Prozessor für Homecomputer begann, ist mittlerweile die führende Prozessorplattform im Smartphone-Bereich und in Milliarden Embedded Devices verbaut. Die ARM-Familie hat in den letzten Jahren Ableger nach unten bekommen (Microcontroller) und verfügt seit zehn Jahren über eine (theoretisch) Server taugliche 64 Bit-Variante. Sie ist Basis für Apples Prozessoren, die ARM auf den Desktop bringen.
Dennoch dauerte es eine Weile, bis ARM im Server-Markt Fuß fassen konnte. So erfüllten die ab Herbst 2014 ausgelieferten ARM-Module für HPEs Moonshot-Plattform die an sie gestellten hohen Erwartungen nicht, drei Jahre später sprach kaum noch jemand über sie. Neuen Schwung in den Markt bringt das 2017 gegründete Unternehmen Ampere Computing, das unter anderem Prozessoren für Googles und Oracles Cloud-Plattformen liefert.
Mit der Anschaffung von ARM-Hardware oder der Portierung von Software abzuwarten, bis ARM im Server-Bereich angenommen wird, war also eine legitime Entscheidung von Checkmk – und ebenso vieler unserer Kunden.
Respektable 5% Marktanteil
Mittlerweile hat die ARM-Plattform im Cloud-Bereich einen Marktanteil von 5% erreicht. Berücksichtigt man Amazons interne Infrastruktur, könnten es gar 15% sein. Weiteres Wachstumspotenzial ist vorhanden. Dass Spieler wie Google, Microsoft und Amazon mit von der Partie sind – teils mit eigenen Prozessoren, meist aber mit den oben erwähnten Ampere-Prozessoren –, bestätigt, dass die Plattform bleiben wird.
Agent zuerst
Für uns bedeutet dies, zuerst den Fokus auf das Monitoring von ARM-basierten Systemen zu legen: Mit dem Legacy-Agenten funktioniert das bereits. Es soll künftig außerdem möglich sein, mit einem Linux-Agentenpaket und möglichst wenig Konfigurationsaufwand, den vollen Funktionsumfang des in Checkmk 2.1 eingeführten Agent Controllers (Verschlüsselung, gegenseitiges Vertrauensverhältnis, optionaler Push-Modus und Autoregistrierung) nutzen zu können. Auf ARM lauffähige Agentenpakete haben daher bei uns Priorität.
Dennoch wollen wir ARM auch für den Checkmk Server nicht ignorieren, zumal die Plattform mit ihren massiven Möglichkeiten der Parallelisierung der Architektur von Checkmk entgegenkommt. Unser Fokus wird dabei im Rechenzentrum liegen, denn Betreiber großer Checkmk Installationen werden am ehesten von gesparten Energiekosten profitieren.
ARM ist nicht gleich ARM
Wenn wir schon die Portierung auf eine neue Prozessorfamilie vornehmen, sehen wir keinen Grund, innerhalb dieser eine Abwärtskompatibilität sicherzustellen. Es deutet sich an, dass der Befehlssatz ARMv8.2-A zum einen eine gute Marktdurchdringung hat, zum anderen Features aufweist, von denen die Performance von Checkmk profitieren wird.
Zum Vergleich: Bei Single Board Computern (SBCs) wie Raspberry Pi sind “Cortex A72”-Kerne sehr beliebt. Diese nutzen noch die allererste, 2012 eingeführte, Version von ARMs 64-Bit-Befehlssatz, nämlich ARMv8-A. Ein Performance-Penalty auf aktueller Profi-Hardware, um mit SBCs kompatibel zu sein, ist Kunden mit großen Checkmk Installationen schlicht nicht vermittelbar.
Intel für die Edge
Als Argument für eine auch auf ARMv8-A (Raspberry Pi 4, Rockchip 3399…) lauffähige Version wurde gerne der Betrieb von Edge Sites im Distributed Monitoring angeführt. Tatsächlich mag hierfür die Leistung von Speicher und CPU eines Raspberry Pi ausreichend sein. In der Praxis sprechen viele Gründe gegen die Nutzung von SBCs. So sind Massenspeicher und Netzwerk häufig ineffizient angebunden, teils an einem internen USB. SD-Karten verfügen über kein Wear Levelling und somit über keine, dem Anwendungsfall angemessene, Datensicherheit.
Oft reicht zwar die Rechenleistung solcher Systeme für das reine Monitoring aus. Sobald jedoch parallel Zugriffe auf die UI stattfinden, kommt es schnell zu Ressourcenengpässen. Das beeinträchtigt die User-Experience und führt zu unnötigem Frust.
Für kleinere Installationen empfehlen wir daher Intels Prozessoren: Wenn es preislich nahe einem Raspberry Pi sein soll, stehen viele Barebones mit Strom sparenden Intel Celeron und NVMe-Unterstützung bereit – ganz ohne große Suche nach einem passenden Netzteil und einem Gehäuse mit ausreichender Kühlung. Wenn es mehr Power auf kleinem Raum sein soll: Auf einem NUC läuft bei Bedarf sogar ein Kubernetes-Cluster. Wollen Sie dennoch einen Raspberry Pi nutzen, stehen Community Builds der Raw Edition zur Verfügung.
Ohne Umweg vom Edge in die Cloud
Außerdem reduzieren bereits in 2.2.0 enthaltene Entwicklungen, etwa der Push-Modus des Agenten, den Bedarf an kleinen Edge-Sites. Dadurch erledigt ein günstig gemieteter, virtueller Server die Arbeit sicherer und zuverlässiger als ein Raspberry Pi.
Porting und CI
Eine Herausforderung ist die Portierung und schließlich die Aufnahme der ARM-Builds in unsere Continuous Integration. Tatsächlich enthalten zwei unserer Komponenten (Checkmk Micro Core und Livestatus) Optimierungen, die, basierend auf der verwendeten Plattform, Anpassungen erforderlich machen. Ein einfaches Neukompilieren auf anderen Plattformen als x86/64 bedeutet daher, dass man von Compiler-Optimierungen, die Instruction Reordering zur Folge haben, nicht Gebrauch machen kann. Wir haben also die Wahl zwischen einer Performance, die unter der des x86/64-Pendants liegt, oder Anpassungen, die analoge Optimierungen für ARM bedeuten. Die andere Art des Memory-Managements bei ARM erfordert außerdem weitere, aufwändige Modifikationen, um einen funktionssicheren Betrieb garantieren zu können.
Einen erheblichen Aufwand wird zudem die Aufnahme in die CI darstellen: Selbst wenn wir nur eine Checkmk Version berücksichtigen, sind kontinuierliche Builds notwendig. In Zahlen: Von Checkmk 2.2.0 werden derzeit in jeder der drei Editionen insgesamt mindestens 13 Installationspakete für vier Distributionen erstellt.
Fast 100 weitere Builds pro Tag
Würden wir die ARM-Unterstützung ebenso umfangreich gestalten, würde das, über die verschiedenen Branches betrachtet, fast 100 zusätzliche Builds pro Tag auf einer vollständig auf ARM duplizierten Build-Infrastruktur bedeuten.
Bei der Priorisierung der Checkmk Roadmap berücksichtigen wir jedoch immer den Vierklang aus Reichweite, Effekt, Zuversichtlichkeit und Aufwand.
Alleine der laufende Aufwand für die CI, sowie der signifikante Einmalaufwand für die Portierung führen dazu, dass wir dem Thema kurzfristig keine Priorität auf der Roadmap geben können.
Wir werden uns somit vorerst auf das Monitoring von ARM-Infrastrukturen fokussieren.
TL;DR
- Checkmk sieht das Potenzial von ARM und den Bedarf unserer Kunden
- Unser Fokus liegt auf einem nahtlosen Monitoring, Agenten für ARM werden daher den Anfang machen
- Betrieb des Checkmk-Servers
- Bei der Entwicklung von Checkmk arbeiten wir weiter auf Plattformneutralität hin und werden so über die Zeit ARM-Kompatibilität erreichen. Wir fokussieren dieses Thema aber aktuell nicht und können daher keinen konkreten Zeitrahmen nennen.
- Unser Fokus liegt auf modernen Server-Prozessoren: Aus Gründen optimaler Performance werden wir keine Unterstützung für Single Board Computer (wie den Raspberry Pi) in Aussicht stellen
Feedback erwünscht
Sie nutzen bereits Linux auf ARM-Servern und würden die vorhandene Infrastruktur gerne optimal überwachen oder sogar zum Betrieb eines Checkmk Servers nutzen? Erzählen Sie uns, welche Hardware Sie einsetzen, mit welchen Distributionen Sie arbeiten und welchen ARM-Anteil Ihre aktuelle Systemumgebung aufweist. Wir würden außerdem gerne wissen, welchen Stellenwert für Sie der Betrieb von Checkmk auf ARM-Servern hat. Schreiben Sie uns einfach eine E-Mail an product@checkmk.com!