Wir haben lange gewartet, um endlich wieder eine Weihnachtssonderfolge herausbringen zu können. FĂŒr diese Folge hat uns Ahmad mal wieder ein spannendes Thema mitgebracht, oder viel mehr einen Themenkomplex. Er erzĂ€hlt uns nĂ€mlich wie sich, als Barebox in die oe-core Layer des Yocto Projekts gebracht wurde, die Gelegenheit ergeben hat spannendeende Dinge ĂŒber Emulation und Virtualisierung mit QEMU und KVM und Paravirtualisierung mit VirtIO zu lernen.
Wir haben lange gewartet, um endlich wieder eine Weihnachtssonderfolge herausbringen zu können. FĂŒr diese Folge hat uns Ahmad mal wieder ein spannendes Thema mitgebracht, oder viel mehr einen Themenkomplex. Er erzĂ€hlt uns nĂ€mlich wie sich, als Barebox in die oe-core Layer des Yocto Projekts gebracht wurde, die Gelegenheit ergeben hat spannendeende Dinge ĂŒber Emulation und Virtualisierung mit QEMU und KVM und Paravirtualisierung mit VirtIO zu lernen.
Leonard und Ahmad
In wahrscheinlich jedem Berufsfeld gibt es Schauergeschichten, die man sich abends am Lagerfeuer mit einer Taschenlampe am Kinn erzĂ€hlen kann. So auch in der Welt der Software. In diesem Podcast geben wir in unregelmĂ€Ăigen AbstĂ€nden Entwicklerinnen und Entwicklern die Möglichkeit ihre Schauergeschichten zu erzĂ€hlen. Es geht um monatelange Fehlersuchen, deren Ergebnis nur eine Hand voll Zeilen falscher Code sind, um subtil fehlerhafte Hardware, die zu sporadisch auftretenden Geistern im System fĂŒhrt, um bröckelnde Software, deren Quellcode schon vor Jahren verloren gegangen ist, und manchmal auch um ganz was anderes.
Wer nicht die ganze Folge hören möchte kann sich an den folgenden Zeitmarken orientieren:
00:00Einleitende warme Worte. Ahmad ist zwar nicht das erste Mal im Podcast, trotzdem stellen wir ihn, mich (Leonard), den Podcast und das Drumherum nochmal bestmöglich vor.
Wir sind ein bisschen aus der Ăbung, also schnallt euch an. Es wird holprig.
02:50 Was ist QEMU und wo begegnet es uns als Embedded-Linux-Menschen? Warum ist manche Software besser im Emulator debuggbar als auf der echten Hardware? 06:50 Welche Vor- und Nachteile bringt hardwareunterstĂŒtzte Virtualisierung mit KVM gegenĂŒber der Emulation in QEMU? 12:00 Wie funktioniert eigentlich die Kommunikation mit emulierter Hardware? Also wie emuliert QEMU Peripherieeinheiten und welche Nachteile hat das fĂŒr die Performance - inbesondere bei hardwareunterstĂŒtzter Virtualisierung. 23:00Was macht VirtIO, um den den emulierten Systemen performantere Peripherieeinheiten zur VerfĂŒgung zu stellen?
Der Oberbegriff hier ist Paravirtualisierung. In diesem Fall ist dem emulierten System durchaus bewusst, dass es in einem Emulator lÀuft.
27:00 Ahmad erzĂ€hlt wie ein Aprilscherz und das Spiel Doom dafĂŒr gesorgt haben, dass es jetzt ĂŒberhaupt VirtIO-Support in Barebox gibt. 31:00 Eine Lobrede auf VirtIO im Allgemeinen, darĂŒber wo es ĂŒberall genutzt wird und welche Peripherie man mittlerweile damit abdecken kann. Dazu eine ErklĂ€rung wie VirtIO eigentlich funktioniert und warum es schneller ist als klassische emulierte Peripherieeinheiten. 40:00 Eine kleine Zusammenfassung dessen, was wir bisher gehört haben. 48:00Zum eigentlichen Hauptteil. Dem Bug, der uns zu alledem gebracht hat.
Barebox sollte in die oe-core Layer des Yocto Projekts Einzug erhalten. Dazu wurden automatisierte Tests geschrieben, die Barebox in einer virtuellen Maschine starten und prĂŒfen ob es grundsĂ€tzlich noch funktioniert. Das Schlug in einem Fall fehl: wenn der Test auf einem ARM64 Host in einer KVM-beschleunigten ARM64 virtuellen Maschine lĂ€uft.
60:00Bonus-Bug Nr. 1:
There are two hards things in Computer Science: cache invalidation and naming things.
âPhil Karlton
In diesem Fall crashte Barebox unter KVM-Virtualisierung unter ARM64 wegen nicht implementierter Cache-Maintenance FunktionalitÀt.
66:00Bonus-Bug Nr. 2: The Caches strike back.
Das System lief grundsĂ€tzlich mit KVM Virtualisierung, aber Zugriffe auf VirtIO GerĂ€te waren enorm langsam und wurden schneller wenn sie auf eigentlich langsameren Prozessorkernen ausgefĂŒhrt wurden oder andere Prozesse den Prozessor ausgelastet haben.
72:00Ende gut alles gut.
Barebox is jetzt in oe-core und steht damit ohne zusĂ€tzliche Layer einbinden zu mĂŒssen allen Yocto-Nutzenden zur VerfĂŒgung.