2010-08-09 13 views
14

En mi compañía, actualmente estamos investigando varias estrategias para acelerar nuestras construcciones de CI. Hemos perfilado nuestras construcciones y determinamos que estamos limitados por un cuello de botella de E/S. Tenemos bastantes opciones para hacer frente a eso en el futuro cercano (~ 1-2 meses) pero realmente me gustaría ver una mejora ahora.¿Es sensato usar un ramdisk en un servidor de compilación?

Propuse el uso de un ramdisk como el proceso de finalización y la ubicación del archivo de compilación. Por supuesto, las salidas y registros de compilación se almacenarán en el disco físico.

¿Es sensato o hay inconvenientes importantes en este enfoque? No busco respuestas que tengan en cuenta el hardware, sino que la interacción entre los sistemas de compilación comunes (por ejemplo, MSBuild) y un ramdisk causará cualquier problema y si hay otros riesgos que debo tener en cuenta.

+0

Una simple nota: supongo que estás hablando de compilaciones nocturnas aquí? en ese caso, por supuesto, debe exprimir el máximo de compilaciones desde el principio y las pruebas ... Si fuera de compilación diaria, sugiero mantener el tiempo de compilación alrededor de 5 Mn como máximo para que los desarrolladores puedan obtener una respuesta rápida sobre posibles problemas en cada compromiso: en este caso, la mayor parte del tiempo es útil hacer una compilación * incremental, es decir, simplemente hacer una actualización svn (hg/git/etc.), y usar Make (o Ant, Nant, etc.) para volver -compilar lo que ha cambiado. Con un buen Makefile escrito, también podría acelerar las cosas dramáticamente. Solo mi 0.02 € :-) –

+0

Estoy hablando de CI aquí (compilación después de cada confirmación). Ya aprovechamos las construcciones incrementales para eso, pero gracias. –

+1

@Christophe Muller, haciendo una declaración general de que una construcción debería ser 'máximo de 5 Mn' es realmente ridícula sin conocer el entorno, el tamaño y los requisitos de la construcción. Tenemos un producto que se ejecuta en un servidor de CI y se genera en menos de dos minutos, incluida la compilación y el empaquetado. Tenemos otro producto que incluye varias soluciones .NET, varios servicios nativos de Windows, múltiples proyectos de Adobe Flex, pruebas de unidades, cobertura de códigos, empaquetado y despliegue automatizado en un rack de prueba. Todo el proceso (que no se ejecuta con cada check-in) dura más de dos horas y media *. –

Respuesta

8

Siempre que tenga suficiente memoria, es algo muy sensato de hacer.

El único inconveniente real es que, naturalmente, su compilación se pierde en el apagado/falla de energía, que generalmente no es una gran preocupación para las compilaciones de CI.

2

Acabo de ejecutar algunas pruebas en mi "servidor de compilación" (en realidad una secuencia de comandos de Powershell) que comprueba 3600 archivos de Subversion, los compila (DOT.NET) y ejecuta algunas pruebas de unidad.

En mi disco duro normal (no muy rápido) el proceso dura 35 segundos.

El uso de la herramienta Dataram RamDisk con la configuración predeterminada de FAT32 en Windows 7 es de 45 segundos.

Al formatearlo con NTFS lo reduce a 30 segundos.

Pero usar una SSD (en mi caso un OCZ Vertex 2) solo lleva 27 segundos.

Hice varias pruebas pero los tiempos son siempre los mismos.

¿Qué podemos aprender de esto?

Un disco Ram no siempre es más rápido, asegúrese de probar diferentes productos con diferentes configuraciones .

Una unidad de estado sólido puede ser incluso más rápida que un disco RAM, lo que me sorprendió.

+0

Tengo un disco RAM DataRam y un ssd y el disco ejecutado es significativamente más rápido. Algo parece sospechoso si ves que el ramdisk toma más tiempo que el ssd. Además de eso, esta compilación ya es bastante rápida y la mayoría de las veces probablemente no esté vinculada a E/S. 35 segundos es realmente rápido para una compra/construcción. Nuestra construcción es mucho más grande: estuvo aumentando más de una hora con pruebas unitarias antes de optimizarla y la redujimos a diez minutos. –

+0

Interesante, esperaba que el RamDisk fuera mucho más rápido que un HD o SSD, así que me decepcionaron mis resultados. Todavía estoy en el proceso de agregar más proyectos y pruebas a mi proceso de compilación y volveré a ejecutar mis pruebas más tarde. Si ya tiene suficiente RAM, un disco RAM también es más económico y no desgasta el SSD. Gracias por su aporte Samuel. –

+5

Eso no suena bien. Sin caché, nada es más rápido que la RAM; ni siquiera una SSD. ¿Por casualidad hizo que su disco RAM fuera tan grande que no había suficiente memoria para que el proceso de compilación realmente hiciera su trabajo? Eso podría haber llevado a intercambiar memoria al sistema de archivos que obviamente tendría un efecto inverso. – McKrassy

Cuestiones relacionadas