Ultimas y próximas compilaciones del kernel

Me he dado cuenta que los tiempos de compilación de los tres últimos kernels de la serie 4.1 son más altos de lo que solían ser:

$ time make -j4 deb-pkg LOCALVERSION=-amd64 KDEB_PKGVERSION=4.1.0-1
real    7m8.266s
user    21m37.484s
sys 1m5.384s

$ time make -j4 deb-pkg LOCALVERSION=-amd64 KDEB_PKGVERSION=4.1.1-1
real    7m3.663s
user    21m44.604s
sys 1m7.108s

$ time make -j4 deb-pkg LOCALVERSION=-amd64 KDEB_PKGVERSION=4.1.2-1
real    7m4.335s
user    21m35.884s
sys 1m6.444s

$ time make -j4 deb-pkg LOCALVERSION=-amd64 KDEB_PKGVERSION=4.1.3-1
real    7m4.535s
user    21m39.636s
sys 1m6.964s

$ time make -j4 deb-pkg LOCALVERSION=-amd64 KDEB_PKGVERSION=4.1.4-1
real    7m2.917s
user    21m34.572s
sys 1m6.288s

$ time make -j4 deb-pkg LOCALVERSION=-amd64 KDEB_PKGVERSION=4.1.5-1
real    7m4.600s
user    21m37.088s
sys 1m7.296s

$ time make -j4 deb-pkg LOCALVERSION=-amd64 KDEB_PKGVERSION=4.1.6-1
real    7m3.761s
user    21m42.748s
sys 1m8.192s

$ time make -j4 deb-pkg LOCALVERSION=-amd64 KDEB_PKGVERSION=4.1.7-1
real    7m21.898s
user    22m25.100s
sys 1m8.088s

$ time make -j4 deb-pkg LOCALVERSION=-amd64 KDEB_PKGVERSION=4.1.8-1
real    7m18.727s
user    22m20.260s
sys 1m6.676s

$ time make -j4 deb-pkg LOCALVERSION=-amd64 KDEB_PKGVERSION=4.1.9-1
real    7m24.771s
user    22m18.148s
sys 1m5.336s

Me estaba preguntando por qué, cuando me he acordado del cambio de versión del compilador. Y resulta que encaja perfectamente:

Linux version 4.1.6-amd64 (gcc version 4.9.3 (Debian 4.9.3-3) ) #1 SMP
Linux version 4.1.7-amd64 (gcc version 5.2.1 20150903 (Debian 5.2.1-16) ) #1 SMP
Linux version 4.1.8-amd64 (javier@hogwarts) (gcc version 5.2.1 20150911 (Debian 5.2.1-17) ) #1 SMP
Linux version 4.1.9-amd64 (javier@hogwarts) (gcc version 5.2.1 20150911 (Debian 5.2.1-17) ) #1 SMP

El tiempo de compilación del kernel ha pasado de ~425 segundos con gcc 4.9 a ~440 segundos con el shiny new compiler1 gcc 5.2, es decir, un incremento del 3,5%. Algunos considerarían esto una regresión...

¿Que por qué no estoy ya en la rama 4.2? Pues fundamentalmente por culpa del driver propietario de NVIDIA (¡qué novedad!). En el kernel 4.2 han refactorizado algo que ha provocado que una función que antes tenía un wrapper ahora haya quedado expuesta como símbolo GPL, o sea, de los que por incompatibilidad de licencias el driver propietario de NVIDIA no puede usar (al menos no directamente). En las release candidates de 4.3 ya lo han "arreglado", pero el mismo parche no ha sido incorporado a la rama estable hasta la versión 4.2.2.

Y ya que estamos hablando de compilaciones de kernels, aprovecho para avisar de un cambio en los scripts de KBuild de los kernels 4.3 que afecta a cómo se generan los paquetes .deb:

make deb-pkg generates a source package, bindeb-pkg has been added to only generate the binary package

O sea, que a partir de los kernels 4.3 make dpkg-deb construye también los paquete source (*.orig.tar.gz, *.debian.tar.gz y *.dsc) con los fuentes del kernel. Los que no queramos perder el tiempo generándolos —la mayoría— tendremos que usar en su lugar el nuevo target make bindeb-pkg.

Me he enterado del cambio porque llevo un tiempo echando un vistazo (muy) de vez en cuando a la lista linux-kbuild y a la historia del fichero scripts/package/builddeb. La razón es que estoy interesado en que incorporen este parche que añade el paquete linux-tools-*.deb (donde reside perf) a los que se generan actualmente. Pero no parece que haya mucha prisa, ya que es la tercera merge window que se queda fuera. Tal vez haya que mostrar algo de interés desde fuera, a ver si se animan. O:-)

:wq


  1. Linus dixit 

blogroll

social