GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Kontinuierliche Integrationstests für den Linux-Kernel

Mit 14.000 Changesets pro Release von über 1.700 verschiedenen Entwicklern ist klar, dass sich der Linux-Kernel schnell entwickelt und viel Komplexität mit sich bringt. Kernel-Bugs reichen von kleinen Ärgernissen bis hin zu größeren Problemen, wie Systemabstürze und Datenverlust.

Da der Ruf nach kontinuierlicher Integration (CI) für immer mehr Projekte wächst, verfolgt das Team für kontinuierliche Kernel-Integration (CKI) eine einzige Mission:Verhindern, dass Fehler zusammengeführt werden der Kernel.

Linux-Testprobleme

Viele Linux-Distributionen testen den Linux-Kernel bei Bedarf. Diese Tests finden häufig um die Veröffentlichungszeit herum statt oder wenn Benutzer einen Fehler finden.

Manchmal treten nicht verwandte Probleme auf, und Betreuer versuchen herauszufinden, welcher Patch in einem Änderungssatz voller Zehntausende von Patches den neuen, nicht verwandten Fehler verursacht hat. Das Diagnostizieren des Fehlers erfordert möglicherweise spezielle Hardware, eine Reihe von Auslösern und spezielles Wissen über diesen Teil des Kernels.

CI und Linux

Die meisten modernen Software-Repositorys verfügen über eine Art automatisiertes CI-Testen, das Commits testet, bevor sie ihren Weg in das Repository finden. Diese automatisierten Tests ermöglichen es den Betreuern, Probleme mit der Softwarequalität zusammen mit den meisten Fehlern zu finden, indem sie den CI-Bericht überprüfen. Einfachere Projekte, wie beispielsweise eine Python-Bibliothek, werden mit unzähligen Tools geliefert, die diesen Prozess vereinfachen.

Linux muss vor jedem Test konfiguriert und kompiliert werden. Dies erfordert Zeit und Rechenressourcen. Außerdem muss dieser Kernel zum Testen in einer virtuellen Maschine oder auf einer Bare-Metal-Maschine booten. Der Zugriff auf bestimmte Systemarchitekturen erfordert zusätzliche Kosten oder eine sehr langsame Emulation. Von dort aus muss jemand eine Reihe von Tests identifizieren, die den Fehler auslösen, oder die Behebung verifizieren.

Wie das CKI-Team arbeitet

Das CKI-Team von Red Hat verfolgt derzeit Änderungen von mehreren internen Kerneln sowie Upstream-Kerneln wie dem Stable-Kernel-Baum. Wir beobachten in jedem Repository zwei kritische Ereignisse:

  1. Wenn Betreuer Pull-Requests oder Patches zusammenführen und sich die resultierenden Commits im Repository ändern.

  2. Wenn Entwickler Änderungen zum Zusammenführen über Patchwork oder die stabile Patch-Warteschlange vorschlagen.

Wenn diese Ereignisse eintreten, tritt die Automatisierung in Aktion und GitLab CI-Pipelines beginnen mit dem Testprozess. Sobald die Pipeline Linting-Skripte ausführt, alle Patches zusammenführt und den Kernel für mehrere Architekturen kompiliert, beginnt das eigentliche Testen. Wir kompilieren Kernel in weniger als sechs Minuten für vier Architekturen und senden Feedback an die Stable-Mailingliste normalerweise in zwei Stunden oder weniger. Über 100.000 Kerneltests werden jeden Monat ausgeführt und über 11.000 GitLab-Pipelines wurden abgeschlossen (seit Januar 2019).

Jeder Kernel wird auf seiner nativen Architektur gebootet, die Folgendes beinhaltet:

● aarch64:64-Bit-ARM, wie Cavium (jetzt Marvell) ThunderX.

● ppc64/ppc64le:Big- und Little-Endian-IBM-POWER-Systeme.

● s390x:IBM Zseries Mainframes.

● x86_64:Intel- und AMD-Workstations, Laptops und Server.

Mehrere Tests werden auf diesen Kerneln ausgeführt, einschließlich des Linux Test Project (LTP), das eine Vielzahl von Tests enthält, die einen gemeinsamen Testrahmen verwenden. Mein CKI-Team hat über 44 Tests auf Open-Source-Basis bereitgestellt, weitere sind in Vorbereitung.

Beteiligen Sie sich

Der Upstream-Kernel-Testaufwand wächst von Tag zu Tag. Viele Unternehmen stellen Testausgaben für verschiedene Kernel bereit, darunter Google, Intel, Linaro und Sony. Jede Anstrengung konzentriert sich darauf, den Upstream-Kernel sowie den Kundenstamm jedes Unternehmens zu bereichern.

Wenn Sie oder Ihr Unternehmen sich den Bemühungen anschließen möchten, kommen Sie bitte zur Linux Plumbers Conference 2019 in Lissabon, Portugal. Nehmen Sie an den zwei Tagen nach der Konferenz am Kernel CI-Hackfest teil und treiben Sie die Zukunft des schnellen Kernel-Testens voran.

Weitere Einzelheiten finden Sie in den Folien meines Vortrags beim Texas Linux Fest 2019.


Linux
  1. Linux – Teilnahme an der Kernel-Mailingliste?

  2. Linux – Finden Sie den Linux-Treiber für Kopfhörer im Kernel-Baum?

  3. Linux – Iommu im Kernel für Grafikkarten-Pass-Through aktivieren?

  4. Kali auf dem Windows-Subsystem für Linux

  5. Kali Linux für den Gemini-PDA

Wie der Linux-Kernel mit Interrupts umgeht

20 Produktivitätstools für das Linux-Terminal

3 eBook-Reader für den Linux-Desktop

So überprüfen Sie die Kernel-Version in Linux

GalliumOS:Die Linux-Distribution für Chromebooks

Arbeiten mit dem Echtzeit-Kernel für Red Hat Enterprise Linux