3min Devops

eBPF maakt controle softwarebuilds veel sneller

eBPF maakt controle softwarebuilds veel sneller

Japanse onderzoekers hebben een methode ontwikkeld waarmee fouten in afhankelijkheden van softwarebuilds aanzienlijk sneller kunnen worden opgespoord. Ze combineren daarvoor eBPF, een Linux-technologie die gebeurtenissen in de kernel kan volgen, met incrementele analyse. In tests daalt de benodigde analysetijd daardoor tot een fractie van bestaande methoden.

Een fout in de afhankelijkheden van een softwareproject kan ervoor zorgen dat een build een verkeerd of verouderd resultaat oplevert. Vooral bij omvangrijke projecten is het controleren van die relaties kostbaar. Onderzoekers van de Waseda University denken dat probleem grotendeels te kunnen ondervangen met mkcheck2. Dat meldt The Register.

De tool kijkt tijdens het buildproces welke bestanden en andere resources daadwerkelijk worden gebruikt en vergelijkt die informatie met de afhankelijkheden die het buildsysteem kent. Daarmee kunnen ontbrekende of verkeerd vastgelegde relaties worden ontdekt.

Controle vanuit Linux-kernel

Het belangrijkste verschil met bestaande oplossingen zit in de manier waarop mkcheck2 het buildproces volgt. Veel bestaande controlemethoden maken gebruik van ptrace. Daarbij moet het besturingssysteem processen herhaaldelijk onderbreken om system calls te kunnen inspecteren. Dat levert extra contextswitches op en kan builds flink vertragen.

Mkcheck2 gebruikt daarvoor eBPF. Daarmee kan code binnen de Linux-kernel gebeurtenissen volgen zonder een proces bij iedere system call stil te zetten. De onderzoekers combineren deze tracing met incrementele analyse: na een wijziging hoeft niet telkens het volledige project opnieuw te worden onderzocht.

Dat verschil is aanzienlijk. Bij tests met 300 opensourceprojecten die Make gebruiken, daalde de gemiddelde analysetijd per commit van 1267,49 naar 23,56 seconden. Dat is bijna 54 keer sneller. De overhead van de foutdetectie lag in sommige tests bovendien 99,7 procent lager dan bij oplossingen op basis van ptrace, aldus The Register.

Interessant voor CI/CD

Voor ontwikkelteams is vooral van belang dat controles hierdoor vaker onderdeel kunnen worden van de normale ontwikkelcyclus. Een analyse die tientallen minuten duurt, is lastig bij iedere commit uit te voeren. Wanneer dezelfde controle binnen enkele tientallen seconden kan plaatsvinden, wordt integratie in CI/CD-pipelines een stuk realistischer.

De onderzoekers stellen dat fouten in de beschrijving van afhankelijkheden een belangrijke oorzaak zijn van mislukte of incorrecte builds. Tools als Make en CMake bepalen op basis van deze relaties welke onderdelen opnieuw moeten worden gebouwd. Een ontbrekende afhankelijkheid kan ertoe leiden dat gewijzigde broncode niet wordt meegenomen, terwijl een overbodige afhankelijkheid juist onnodig werk veroorzaakt.

Voorlopig alleen Linux

Mkcheck2 is geen universele oplossing. De gebruikte eBPF-techniek bindt de huidige implementatie aan Linux. Ook verschillende complexere situaties worden nog niet volledig afgedekt. Daaronder vallen dynamisch geladen libraries, netwerkafhankelijkheden, memory-mapped bestanden en gedistribueerde builds.

Toch laten de resultaten zien dat controle van buildafhankelijkheden niet noodzakelijk gepaard hoeft te gaan met een grote performancepenalty. Dat kan relevant worden nu software vaker en sneller wordt aangepast en geautomatiseerde build- en testprocessen daardoor steeds intensiever worden gebruikt.