vie 02 octubre 2015
Por Javier Cantero
En Linux .
etiq.: linux kernel 4.1 4.2 4.3 gcc nvidia
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 compiler 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