Cómo acelerar la compilación con Pacman

Buenas, ésta vez les traigo un pequeño tip (que probablemente muchos ya conozcan), pero que varias personas que suelen usar distros basadas en Pacman probablemente no lo sepan, y que para peor: estén usando un solo núcleo para compilar.

Recomiendo encarecidamente leer las “Consideraciones para la compilación” antes de compilar a tontas y a locas

Manos a la obra…

Conocer nuestro número de procesadores

Primero vamos a ver cuantos procesadores tenemos disponibles (los mas expertos no se asusten, hay diferencias obviamente entre threads y procesadores físicos, pero el makepkg usa como parámetro los hilos de ejecución), para eso ejecutamos:

lscpu | grep '^CPU(s):'

En mi caso devuelve:

[x11tete11x@Jarvis ~]$ lscpu | grep '^CPU(s):'
 CPU(s): 8
 [x11tete11x@Jarvis ~]$

Esto es porque en el caso de los procesadores Intel con HiperThreading muestra también los hilos de ejecución.

Editar el Archivo /etc/makepkg.conf

Editamos el archivo /etc/makepkg.conf para indicarle al makepkg que use todos los procesadores disponibles; en cuanto a esto, según la wiki de Gentoo, la cantidad de “trabajos” a realizar sale de la siguiente cuenta:

Número de procesadores + HT (HiperThreading en caso de Intel compatible) + 1

Editamos:

sudo nano /etc/makepkg.conf

y modificamos la linea MAKEFLAGS (descomentando<quitando el “#”>) con el valor correspondiente, en mi caso quedaría así:

MAKEFLAGS="-j9"

Guardamos los cambios y listo, ya podemos hacer la compilación de nuestros paquetes usando varios núcleos dentro de cualquiera de nuestras distros basadas en Pacman

A continuación adjunto un vídeo en el que se puede apreciar como “simplescreenrecorder” es compilado en cada caso, con el MAKEFLAGS (MAKEFLAGS=”-j9″), y sin el MAKEFLAGS (#MAKEFLAGS=”-j9″):

https://www.youtube.com/watch?v=iaNdeLz1UvQ



Soy Tete, un psicópata de los detalles, que siente atracción por las distros basadas en código fuente, cuanto mas pueda hacer sufrir a mi hardware, mas contento estoy, extremadamente rockero y de apariencia símil vikingo (?

27 comentarios

  1.   Yoyo dijo

    Tío esto es, como decimos en mi pueblo “la polla en vinagre” osea, muy bueno 😛

    Yo tengo un 4 núcleos, me salen 4, supongo que tendré que poner un 5 ¿no?

    Por cierto, corrige makekpg.conf, que si no volverás loco al copy/pastero, es makepkg.conf

    Pacman rules!!!! 😛

    1.    x11tete11x dijo

      Justo vi el errorsito xD, ya le mande a los muchachos para que lo corrijan xD
      efectivamente, en tu caso seria 5 xD.

      Sabia que te iba a gustar éste artículo xD jajajja

        1.    Manuel de la Fuente dijo

          Mi user agent me traiciona, ahora estoy en Arch…

          Todo por usar el mismo perfil de Firefox en ambas distros. 😛

      1.    roader dijo

        Aprobecho para comentar que si usas BFS (si no sabes lo que es entonces no lo usas) el maximo rendimiento se consigue con la cantidad de nucleos tal cual , sin añadirle nada .

      2.    ShutdowN dijo

        Y si me tira que tengo “2” pongo 3 ¿no?.

      3.    x11tete11x dijo

        @ShutdowN exacto

      4.    Azureus dijo

        Te pinches amo, lo hice cuando sacaste el articulo, ahora lo estoy utilizando porque no sabía compilar jajaja.
        Es lindo porque conky me dice que los 4 hilos de mi i3 están al 100% y cuando lo edité creo que tenía sólo un hilo configurado. Amo esto, estoy compilando ahora mismo mi propio kernel, a ver como sale :v

    2.    thalskarth dijo

      Concuerdo con Yoyo, aunque en mi pueblo no se diga, es “la polla en vinagre”!!. Apenas llegue a casa lo pruebo.

      1.    cacho dijo

        que probas cuando llegues a casa … la polla ? jajja
        me hiciste reir …
        abrazo

  2.   Yoyo dijo

    Sabía que eran 5 porque lo decía en este post de como compilar a mano el Kernel para Debian jajaja

    http://yoyo308.com/2013/11/22/como-compilar-e-instalar-el-ultimo-kernel-3-12-1-en-crunchbang-waldorf-debian-wheezy/

    1.    x11tete11x dijo

      maldito auto spamero xD jajajja

      1.    Manuel de la Fuente dijo

        No te preocupes, ya lo tengo en la mira de mi banhammer, muajajajaja.

      2.    nano dijo

        “Mi banhammer”, no me hagas darte un putazo a ti también para que se te bajen los humos <3

        1.    Manuel de la Fuente dijo

          Fuera de aquí, cabeza de rábano, sigue trabajando o voy por el garrote.

      3.    elav dijo

        Jajaja.. madre mía, me encanta esta Comunidad.

  3.   roader dijo

    Tambien es muy util ccache , pero eso requiere una compilacion previa para acelerar la compilacion.

    1.    thalskarth dijo

      No entendí, compilas para acelerar la compilación?

      1.    roader dijo

        ccache es una herramienta (muy usada por los usuarios de gentoo) que permite guardar ficheros intermedios de la compilacion de un archivo , resultando la siguiente compilacion de ese ejecutable mucho , mucho mas rapida . Util tambien para desarrolladores de aplicaciones y para personas que construyen y actualizan constantemente su propio kernel.

      2.    Yukiteru dijo

        ccache es una cache de compilación, cuando la activas la primera compilación que haces dura lo que deba durar (si es Java, Firefox y LibreOffice juntos te aseguras unas cuantas horas de compilación si tu hardware no es muy potente), pero la segunda compilación de ese mismo software (la misma versión, con algunos cambios en sus opciones de compilación o parches) será mucho más rápida porque el ccache verifica que muchos de lo compilado ya este listo y te disminuye el tiempo de compilación. Sin embargo, a veces da problemas (no por algo en la Wiki de Gentoo ponen la advertencia) y en la lista de FirefoxOS también lo hacen, así que si vas a cachear hazlo con una misma versión, si pasas a otra, limpia el cache y empieza de nuevo.

      3.    thalskarth dijo

        Gracias a ambos por el dato, no lo sabía

  4.   Eduardo dijo

    Llevo año y medio en Arch y nunca me había enterado de este tip, gracias.

  5.   hjoaco dijo

    ser pobre apesta!
    jejejejejejjee

  6.   userarch dijo

    Gracias. estos datos son muy buenos

  7.   luis cuadrado dijo

    tengo una pregunta…

    vengo hace un tiempo usando esta opcion (el numero que me tiró era 4 por lo que queda #MAKEFLAGS=”-j5″)

    pero noto que cuando actualizo algunos programas, el CPU se va a 100% y es complicado usar otros programas mientras pasa esto…

    puedo hacer algo intermedio?? por ejemplo, ponerle un #MAKEFLAGS=”-j3″ ???? o es algo que esta activado o desactivado sin un termino medio?

    saludos.

    1.    x11tete11x dijo

      Luis, si, podes ponerle -j3 sin problemas, lo que hace ese parámetro es definir en cuantos “threads” (para no entrar en detalle, digamos que los threads son en cuantas “porciones paralelas” vas a procesar lo que vas a hacer) se van a utilizar para dicho proceso

  8.   Anónimo dijo

    perfecto, ahora le pongo. Gracias vieja!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.