View previous topic :: View next topic |
Author |
Message |
Franco Gotusso Guru
Joined: 15 Apr 2004 Posts: 313 Location: Benidorm, Alicante, Spain
|
Posted: Thu Mar 17, 2005 7:59 pm Post subject: [HOWTO] Prelink (Nvidia incluido) |
|
|
Introducción
Ya que la guía de Gentoo sobre prelink está muy desactualizada, voy a explicar los pasos a seguir para utilizar correctamente prelink e incluso como prelinkear los drivers de nvidia.
¿Qué es prelink?
Muchos programas usan bibliotecas compartidas que deben cargar al iniciarse. Para los programas pequeños el tiempo de carga es muy corto pero para los programas escritos en C++ (En su mayoría los de KDE) y los que usan muchas bibliotecas, el tiempo de carga es mayor. Prelink es un programa que modifica las bibliotecas compartididas ELF y los binarios ELF enlazados dinámicamente, esto hace que el tiempo y la memoria que necesita el enlazador dinámico al inicio y durante la ejecución del programa sea significativamente menor. Todo esto sólo se usa si todas las bibliotecas dependientes no han cambiado desde el último prelinkeado, en otro caso los programas funcionarán normalmente.
Prelinkeando
El primer paso será emerger prelink.
Ahora, (Y esto es muy importante) debeis agregar la use "pic" a vuestro make.conf, lo cual nos permitirá prelinkear nuestros binarios. Tendreis que actualizar ciertos programas.
Code: | "emerge -uDv --newuse world |
Después, para poder prelinkear los drivers de nvidia, tenedremos que ejecutar temporalmente lo siguiente, pero no hagais un env-update.
Code: | opengl-update xorg-x11 |
Por último, realizamos por fin el prelinkeado.
La última línea al acabar debería ser "Executing /sbin/init U", si no es el caso es que no todo a sido prelinkeado. Revisa los pasos anteriores.
Ahora, para volver a usar el archivo libgl.so de nvidia ejecuta:
Code: | opengl-update nvidia |
Si usas KDE debes editar en el fichero /etc/env.d/99kde-env lo siguiente:
Code: | #KDE_IS_PRELINKED=1
KDE_IS_PRELINKED=1 |
Para finalizar:
Code: | env-update
source /etc/profile |
Reinicia y disfruta.
Créditos
Traducido del post original de hds. _________________ Los programadores están ocupados intentando mejorar los programas a prueba de idiotas. Mientras tanto el universo intenta mejorar a los idiotas. El universo va ganando.
Last edited by Franco Gotusso on Fri Mar 18, 2005 3:54 pm; edited 1 time in total |
|
Back to top |
|
|
German3D Guru
Joined: 30 Nov 2004 Posts: 446 Location: ../madrid/mostoles
|
Posted: Thu Mar 17, 2005 9:02 pm Post subject: |
|
|
Te lo curras
Esto del prelink es bueno para los que reinician 1 vez al dia el PC no? Si lo dejas encendido esto no afecta verdad ¿?
54|u2 _________________ A mi lo que mas me gusta , es el espiritu linux ...
No leais esto!
El único problema de Gentoo es , que provoca adicción :\ |
|
Back to top |
|
|
Franco Gotusso Guru
Joined: 15 Apr 2004 Posts: 313 Location: Benidorm, Alicante, Spain
|
Posted: Fri Mar 18, 2005 6:32 am Post subject: |
|
|
Muchas gracias.
Sobre tu pregunta, el prelink afecta al ejecutable que no este en memoria, es decir que afecta cuando es la primera vez que arrancas el programa desde que enciendes el ordenador o si ya habais abierto el programa pero ya has cargado tantas cosas o ha pasado tanto tiempo que el kernel lo ha quitado de la ram.
Salud! _________________ Los programadores están ocupados intentando mejorar los programas a prueba de idiotas. Mientras tanto el universo intenta mejorar a los idiotas. El universo va ganando. |
|
Back to top |
|
|
SpOeK Apprentice
Joined: 07 Jan 2003 Posts: 164 Location: Getafe - Madrid (España)
|
Posted: Fri Mar 18, 2005 10:31 am Post subject: |
|
|
Hola, siento decirlo pero con esto no consigues prelinkar las bibliotecas de nVidia.
Cuando cambias con opengl-update la interfaz OpenGL y ejecutas el prelink consigues que los binarios que referenciaban antes al binario de nVidia lo hagan al de Xorg-x11, que sí puedes prelinkar.
Por tanto, no puedes hacer nada, por cómo ha generado nVidia esos binarios. Lo único que consigues es que no aparezcan tantos errores pero nada más. |
|
Back to top |
|
|
psm1984 l33t
Joined: 14 Oct 2003 Posts: 919
|
Posted: Fri Mar 18, 2005 10:43 am Post subject: Re: [HOWTO] Prelink (Nvidia incluido) |
|
|
Franco Gotusso wrote: | Lo que hace prelink es incluir esas bibliotecas dentro del propio programa para acelarar su carga. |
Prelink no incluye las librerias dentro del programa, en man prelink viene una buena descripcion. |
|
Back to top |
|
|
Franco Gotusso Guru
Joined: 15 Apr 2004 Posts: 313 Location: Benidorm, Alicante, Spain
|
Posted: Fri Mar 18, 2005 1:25 pm Post subject: |
|
|
Quote: | Hola, siento decirlo pero con esto no consigues prelinkar las bibliotecas de nVidia.
|
Ya, si te fijas es lo que dicen en los comentarios del howto original y lo que el autor discute, y aunque me parece entender lo mismo que tu me pierdo un poco, de modo que he preferido hacer una simple traduccion ya que a la malas lo unico que va a pasar es que esos binarios no se prelinkeen.
Quote: | Prelink no incluye las librerias dentro del programa, en man prelink viene una buena descripcion. Wink |
Vale, tienes razon pero ¿como traduzco yo eso? Nunca, en toda mi vida, he aprendido tanto ingles como el que estoy aprendiendo con el software libre
Ya lo arreglare. _________________ Los programadores están ocupados intentando mejorar los programas a prueba de idiotas. Mientras tanto el universo intenta mejorar a los idiotas. El universo va ganando. |
|
Back to top |
|
|
psm1984 l33t
Joined: 14 Oct 2003 Posts: 919
|
Posted: Fri Mar 18, 2005 2:42 pm Post subject: |
|
|
Lo he traducido con ayuda de traductores web, no te fies mucho, que mi ingles es bastante malo (y el de los traductores web ... x'D).
Quote: |
prelink es un programa que modifica las bibliotecas compartididas ELF y los enlaces binarios dinamicos ELF, esto hace que el tiempo necesario para hacer el enlace dinamico para la relocalizacion al inicio sea significativamente disminuido y tambien, debido a un numero menor de relocalizaciones en tiempo de ejecucion, el consumo de memoria diminuye (especialmente el numero de paginas no compartidas). Tal informacion solo es usada si todas las bibliotecas dependientes no han cambiado desde el ultimo prelinking, en otro caso los programas realizan la relocalizacion normalmente.
Primero prelink recolecta los binarios ELF que deben ser prelinked y todas las bibliotecas que dependan de el. Entonces asigna un unico slot del espacio de direcciones virtual por cada biblioteca, y reenlaza la biblioteca compartida con la direccion base. Cuando el enlazador dinamico quiere cargaruna biblioteca, a menos que el slot de direccion virtual este ocupado, lo mapeara en el slot dado. Una vez hecho esto, prelink, con ayuda del enlazador dinamico, resuelve todas la relocalizaciones en el binario o bibliotecas contra sus bibliotecas dependientes y las guarda dentro del objeto ELF. Esto tambien guarda una lista de todas la bibliotecas dependientes junto con sus checksums. Para los binarios, tambien cuenta una lista de conflictos (relocalizaciones que resuelven diferentemente en una busqueda de simbolos binarios que en el alcance mas pequeño de la busqueda en el cual la biblioteca dependiente fue resuelta) y lo guarda dentro de una seccion especial del ELF.
En tiempo de ejecucion, el enlazador dinamico comprueba todas las bibliotecas dependientes, cuando estan mapeadas correctamente en sus slots designados y cuando no han cambiado desde el ultimo prelinking. Si todas las comprobaciones son correctas, el enlazador dinamico rehace la lista de conflictos (que es normalmente bastante mas corta que el numero total de relocalizaciones) en vez de volver a poner cada biblioteca.
|
|
|
Back to top |
|
|
Franco Gotusso Guru
Joined: 15 Apr 2004 Posts: 313 Location: Benidorm, Alicante, Spain
|
Posted: Fri Mar 18, 2005 3:56 pm Post subject: |
|
|
Muchas gracias, al final solo he usado el primer parrafo porque no creo que sea necesario explicar todo el proceso, al fin y al cabo solo es un howto
Muchas gracias. _________________ Los programadores están ocupados intentando mejorar los programas a prueba de idiotas. Mientras tanto el universo intenta mejorar a los idiotas. El universo va ganando. |
|
Back to top |
|
|
Cadena Perpetua n00b
Joined: 16 Aug 2004 Posts: 57
|
Posted: Wed Aug 24, 2005 7:49 pm Post subject: |
|
|
Bueno antes que nada GRACIAS por tomarte el trabajo de hacer este how-to, esta muy bien hecho... segui los pasos y todo funcionó a la perfeccion, personalmente no noté diferencia, pero nunca está de mas hacerlo!! gracias |
|
Back to top |
|
|
Franco Gotusso Guru
Joined: 15 Apr 2004 Posts: 313 Location: Benidorm, Alicante, Spain
|
Posted: Thu Aug 25, 2005 9:05 am Post subject: |
|
|
Lo se, nunca hay demasiada diferencia, pero la hay. Donde mas se nota es en las aplicaciones escritas en C++, KDE principalmente. En fin, salud. _________________ Los programadores están ocupados intentando mejorar los programas a prueba de idiotas. Mientras tanto el universo intenta mejorar a los idiotas. El universo va ganando. |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|