2010-09-12 13 views
8

Estoy construyendo webkit (2 millones de líneas de código) después de cada diez minutos para ver el resultado de mi cambio en él, y la vinculación de webkit en mi máquina requiere procesar 600-700 MB de archivos de objetos que están en mi disco duro. Eso lleva alrededor de 1.5 minutos. Quiero acelerar este proceso de vinculación.Velocidad de enlace de aceleración/enlace rápido en linux

¿Hay alguna posibilidad de que, puedo decir os para mantener todos los archivos de objeto en RAM solamente (tengo 4 GB de RAM). ¿Hay alguna otra forma de acelerar el enlace?

¡Se agradecen todas las ideas o ayuda!

Aquí es un comando que tiene 1,5 minutos,

http://pastebin.com/GtaggkSc

+0

¿Puede confirmar que, por ejemplo, con arriba o vmstat? Los datos deberían estar ya en su caché, pero el enlazador también necesitará algo de tiempo para procesarlo, por lo que puede estar vinculado a la CPU. –

+0

@Turbo J, descubrí que en mi procesador solo se usa un núcleo para un 22-25 por ciento. – SunnyShah

Respuesta

11

He resuelto este problema usando tempfs y gold linker.

1). tmpfs: directorio de montaje que contiene todos los archivos de objetos como tmpfs.

2). gold linker: el uso del vinculador de oro hará que la vinculación sea 5-6 veces más rápida, con la ventaja de la ventaja de tmpfs será de 7-8 veces mayor que la del enlace normal. use el siguiente comando en ubuntu y su enlazador normal será reemplazado con Gold Linker.

sudo apt-get install binutils-gold 

Puede encontrar algunos errores de enlace con el vinculador de oro, a continuación, el hilo es una buena ayuda.

Replacing ld with gold - any experience?

2

intenta utilizar un ramdisk

+5

O, en un sistema Linux moderno, un tmpfs es generalmente mejor. – MarkR

+1

Ejecuto mi linux en una imagen de VMWare que vive en un ramdisk. Con una configuración mínima especial de Linux solo para compilar. De lo contrario, es muy difícil estar seguro de que haya algo en la memoria RAM. Pero esto requerirá mucho más que 4 GB, 16 GB son mínimos. – Lothar

1

A decir verdad no estoy seguro de entender el problema, pero sería algo así como ramfs ser de utilidad para ¿tú?

+0

Gracias por sus comentarios, aclaré mi pregunta ahora. – SunnyShah

+0

OK, así que parece que usar ramfs (o ramdisk como mmonem sugerido) sería útil para ti, siempre que te permitan crear "discos" que sean lo suficientemente grandes (descargo de responsabilidad: nunca he usado ninguno de los programas, pero yo ' he oído hablar de su utilidad).Copie los archivos objeto que necesita al "disco" y apunte su enlazador a estos archivos en lugar de a los que están en su disco duro. Espero que esto ayude. –

+0

Gracias Matt, estoy verificando tu solución ahora mismo. – SunnyShah

1

Obtenga un disco SSD para su máquina Linux. Si el rendimiento de escritura sigue siendo un problema, configure la ruta de salida para que esté en un disco RAM.

¿Has medido la cantidad de 1.5min que realmente tiene IO? Webkit es tan grande que significa que puede ejecutar en la memoria caché de la basura. Intente averiguar cuántas fallas de caché L1/L2 tiene. Sugeriría que esto es un problema. En este caso, su única esperanza es que alguien en el equipo de GCC investigue este problema.

Por cierto: Microsoft tiene el mismo problema con los tiempos extremos del enlazador.

+0

Acabo de mirar su contenedor pegado. Realmente debería intentar agrupar archivos .o individuales en .lib; esto puede ser un problema. Y trate de usar ReiserFS, que es mucho mejor con archivos pequeños que con otros sistemas de archivos. – Lothar

Cuestiones relacionadas