white wooden house during daytime

Kernel mit ccache bauen

Nachdem ich seit ein paar Kernel-Versionen Debian Pakete aus den Quellen von Kernel.org (optional mit Gentoo-Patches) baue, muss ich das gleiche Ding mehrmals bauen – drei mal um genau zu sein: Einmal ohne Modifikationen, einmal für Virtuelle Maschinen und ein drittes mal für Gameserver mit dem Gentoo-Patchset

In einem älteren Blogpost über ccache habe ich über die (un)Sinnhaftigkeit von ccache bei einem Gentoo-System geschrieben, da ein Cache erst bei wiederholtem Bauen der selben Prozedur greift. Also genau bei diesem Anwendungsfall, wo der Kernel mehrmals gebaut wird. Die Implementation ist einfach – der make Befehl wird mit CC=“ccache gcc“ erweitert und wir sind im Geschäft.

Damit dieser Post hier nicht nur leere Worte sind, hier ein paar Zahlen nach dem ersten gebauten Kernel, der wie üblich etwa eine Stunde baute:

cache hit (direct)                     0
cache hit (preprocessed)               0
cache miss                         15556
cache hit rate                      0.00 %
called for link                       29
called for preprocessing            2857
unsupported code directive             4
no input file                        682
cleanups performed                     0
files in cache                     46654
cache size                           7.2 GB
max cache size                      10.0 GB

Der erste Compile brachte keine Treffer im Cache und somit auch keine Zeitersparnis. Der zweite Durchgang hingegen zeigte ein paar Treffer. Die Ergebnisse:

cache hit (direct)                    34
cache hit (preprocessed)             774
cache miss                          7318
cache hit rate                      9.94 %
called for link                       28
called for preprocessing            1964
unsupported code directive             4
no input file                        682
cleanups performed                    17
files in cache                     53763
cache size                           8.8 GB
max cache size                      10.0 GB

Um noch mehr Geschwindigkeit herauszuholen wäre der Einsatz von distcc denkbar. Die Implementation ist genauso einfach durch die Erweiterung der CC Variable auf CC=’ccache distcc gcc‘ machbar, aber der Aufwand mit gleichen Compilern und besserem Netzwerk als ich hier zur Verfügung habe…

Author:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.