
Prelink es un programa, desarrollado principalmente para Linux, que permite mejorar la velocidad del sistema, reduciendo el tiempo necesario para la carga de las aplicaciones. La mejora obtenida no suele ser espectacular, pero en sistemas con una gran cantidad de librerías, como KDE, el incremento de velocidad de carga es normalmente apreciable.
Casi todos los programas necesitan de librerías para funcionar. Estas normalmente se distribuyen de manera separada a las aplicaciones, y es muy común que existan múltiples aplicaciones que utilicen una misma librería. Por ejemplo, si queremos desarrollar un reproductor de música en formato ogg, seguramente utilizaremos alguna librería disponible para este objetivo, y nosotros nos centraríamos en la interfaz y en las funciones particulares que nuestra aplicación le dará al usuario.
Normalmente las librerías se distribuyen de manera separada a la aplicación, y deben ser vinculadas dinámicamente al momento de ejecutarla. Esto tiene grandes ventajas con respecto a la administración de las librerías y el tamaño de los ejecutables, ya que al separarlas del código particular es posible que sean usadas por muchas aplicaciones. De esta manera logramos, por ejemplo, que los cientos de aplicaciones que componen a Plasma Desktop (KDE) no contengan duplicados del código de la librería, y que esta sólo deba cargarse una vez en la memoria RAM. En cambio, si la librería se incluyera dentro de la aplicación, cada programa tendría su copia de la misma.
Uno de los inconvenientes de esta manera de realizar el linkeo es que, al cargar cada aplicación, es necesario que el sistema encuentre dónde están las librerías necesarias en la memoria RAM, ya que su ubicación puede cambiar con cada ejecución. Esto provoca un pequeño impacto en el rendimiento, aunque se incrementa a medida que más librerías sean necesarias. Prelink intenta mitigar este efecto realizando la vinculación entre los ejecutables y las librerías de manera anticipada.
Si bien el impacto puede ser apreciable en muchos casos, reduciendo la velocidad de carga de las aplicaciones en unos segundos, no hace milagros. Por lo que si tienen alguna máquina medio antigua les recomiendo adquirir un nuevo equipo. ¿Comprar un computador o una tablet? Según mi experiencia, antes de realizar la decisión, lo mejor es pensar bien qué uso daremos al equipo. Para un uso general, no hay nada mejor que una PC.
Aplicando Prelink
Prelink se encuentra en los repositorios de todas las distribuciones populares, por lo que su instalación no representa un problema.
Si bien prelink tiene muchas opciones, y permite linkear aplicaciones individualmente, para estas instrucciones se va a considerar sólo el caso más común, en el que se optimiza todo el sistema (salvo algunas excepciones). El método que utiliza prelink puede provocar algunos inconvenientes con algunas librerías y aplicaciones propietarias (como drivers de video de Nvidia y AMD o Skype), por lo que el primer paso consistirá indicar estas excepciones en el archivo /etc/prelink.conf. Copiamos en este archivo lo siguiente:
# Skype -b /usr/lib32/skype/skype -b /usr/lib/skype/skype # Flash Player Plugin -b /usr/lib/mozilla/plugins/libflashplayer.so # NVIDIA -b /usr/lib/libGL.so* -b /usr/lib32/libGL.so* -b //usr/lib/libOpenCL.so* -b //usr/lib32/libOpenCL.so* -b /usr/lib32/vdpau/ -b /usr/lib/vdpau/ -b /usr/lib/xorg/modules/drivers/nvidia_drv.so -b /usr/lib/xorg/modules/extensions/libglx.so* -b /usr/lib/libnvidia-* -b /usr/lib32/libnvidia-* # Catalyst -b /usr/lib/libati* -b /usr/lib/fglrx* -b /usr/lib/libAMDXvBA* -b /usr/lib/libGL.so* -b /usr/lib/libfglrx* -b /usr/lib/xorg/modules/dri/fglrx_dri.so -b /usr/lib/xorg/modules/drivers/fglrx_drv.so -b /usr/lib/xorg/modules/extensions/fglrx/ -b /usr/lib/xorg/modules/linux/libfglrxdrm.so -b /usr/lib/xorg/modules/extensions/libglx.so
Una vez indicadas estas excepciones, podemos realizar la optimización del sistema entero: prelink -amvR
Programar optimización
Con este comando se habrá hecho el prelinkeo de todo el sistema. De todas maneras es recomendable programar periódicamente la ejecución de este comando, ya que cuando existe una modificación en las librerías o las aplicaciones es necesario volver a aplicarlo. Según la wiki de Arch, la mejor manera es realizar la ejecución diariamente creando el archivo /etc/cron.daily/prelink con el siguiente contenido:
#!/bin/bash [[ -x /usr/bin/prelink ]] && /usr/bin/prelink -amR &>/dev/null
Para que se ejecute es necesario darle permisos de ejecución: chmod 755 /etc/cron.daily/prelink
Configuración especial para KDE
Es conocido del hecho de que KDE es probablemente el entorno de escritorio que más se beneficia con la utilización de prelink, pero para poder aprovechar al máximo, es necesario informarlo en el archivo /etc/profile.d/kde-is-prelinked.sh, agregándole el siguiente contenido:
export KDE_IS_PRELINKED=1
Luego, le damos los permisos necesarios: chmod 755 /etc/profile.d/kde-is-prelinked.sh

