{"id":1821,"date":"2021-01-27T21:23:53","date_gmt":"2021-01-27T20:23:53","guid":{"rendered":"https:\/\/my.stargazer.at\/?p=1821"},"modified":"2021-01-27T21:23:53","modified_gmt":"2021-01-27T20:23:53","slug":"ccache-on-kernels","status":"publish","type":"post","link":"https:\/\/my.stargazer.at\/de\/2021\/01\/27\/ccache-on-kernels\/","title":{"rendered":"Kernel mit ccache bauen"},"content":{"rendered":"<p>Nachdem ich seit ein paar Kernel-Versionen <a href=\"https:\/\/toei.stargazer.at\/2020\/12\/15\/kernel-kernel-am-system\/\" target=\"_blank\" rel=\"noopener\">Debian Pakete<\/a> aus den Quellen von Kernel.org (optional mit <a href=\"https:\/\/my.stargazer.at\/2020\/10\/30\/building-a-gentoo-linux-kernel-on-debian\/\">Gentoo-Patches<\/a>) baue, muss ich das gleiche Ding mehrmals bauen &#8211; drei mal um genau zu sein: Einmal ohne Modifikationen, einmal f\u00fcr Virtuelle Maschinen und ein drittes mal f\u00fcr Gameserver mit dem <a href=\"https:\/\/my.stargazer.at\/2020\/10\/30\/building-a-gentoo-linux-kernel-on-debian\/\">Gentoo-Patchset<\/a><\/p>\n<p>In einem <a href=\"https:\/\/my.stargazer.at\/2014\/11\/24\/ccache-more-speed\/\">\u00e4lteren Blogpost \u00fcber ccache<\/a> habe ich \u00fcber 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 &#8211; der make Befehl wird mit <em>CC=&#8220;ccache gcc&#8220;<\/em> erweitert und wir sind im Gesch\u00e4ft.<\/p>\n<p>Damit dieser Post hier nicht nur leere Worte sind, hier ein paar Zahlen nach dem ersten gebauten Kernel, der wie \u00fcblich etwa eine Stunde baute:<\/p>\n<pre>\r\ncache hit (direct)                     0\r\ncache hit (preprocessed)               0\r\ncache miss                         15556\r\ncache hit rate                      0.00 %\r\ncalled for link                       29\r\ncalled for preprocessing            2857\r\nunsupported code directive             4\r\nno input file                        682\r\ncleanups performed                     0\r\nfiles in cache                     46654\r\ncache size                           7.2 GB\r\nmax cache size                      10.0 GB\r\n<\/pre>\n<p>Der erste Compile brachte keine Treffer im Cache und somit auch keine Zeitersparnis. Der zweite Durchgang hingegen zeigte ein paar Treffer. Die Ergebnisse:<\/p>\n<pre>\r\ncache hit (direct)                    34\r\ncache hit (preprocessed)             774\r\ncache miss                          7318\r\ncache hit rate                      9.94 %\r\ncalled for link                       28\r\ncalled for preprocessing            1964\r\nunsupported code directive             4\r\nno input file                        682\r\ncleanups performed                    17\r\nfiles in cache                     53763\r\ncache size                           8.8 GB\r\nmax cache size                      10.0 GB\r\n<\/pre>\n<p>Um noch mehr Geschwindigkeit herauszuholen w\u00e4re der Einsatz von distcc denkbar. Die Implementation ist genauso einfach durch die Erweiterung der CC Variable auf CC=&#8217;ccache distcc gcc&#8216; machbar, aber der Aufwand mit gleichen Compilern und besserem Netzwerk als ich hier zur Verf\u00fcgung habe&#8230;<\/p>","protected":false},"excerpt":{"rendered":"<p>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 &#8211; drei mal um genau zu sein: Einmal ohne Modifikationen, einmal f\u00fcr Virtuelle Maschinen und ein drittes mal f\u00fcr Gameserver mit dem Gentoo-Patchset In einem \u00e4lteren Blogpost \u00fcber ccache habe ich \u00fcber die (un)Sinnhaftigkeit [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":1822,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[599,401,22],"class_list":["post-1821","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-it-related-stuff","tag-ccache","tag-kernel","tag-linux"],"_links":{"self":[{"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/posts\/1821","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/comments?post=1821"}],"version-history":[{"count":0,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/posts\/1821\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/media\/1822"}],"wp:attachment":[{"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/media?parent=1821"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/categories?post=1821"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/my.stargazer.at\/de\/wp-json\/wp\/v2\/tags?post=1821"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}