vaciar suficiente optimizar numero necesita msi memoria los hay entre entero discos cs6 como build build-process continuous-integration

build - suficiente - ramdisk windows 10



¿Es sensato utilizar un disco RAM en un servidor de compilación? (2)

En mi empresa, actualmente estamos investigando varias estrategias para acelerar nuestras compilaciones de CI. Hemos perfilado nuestras compilaciones y hemos determinado que estamos limitados por un cuello de botella de E / S. Tenemos bastantes opciones para lidiar con eso en un futuro cercano (~ 1-2 meses) pero realmente nos gustaría ver una mejora ahora .

Propuse usar un ramdisk como la ubicación de checkout y buildfile. Por supuesto, las salidas y los registros de la compilación se almacenarán en el disco físico.

¿Es eso algo sensato de hacer o hay inconvenientes importantes en este enfoque? No busco respuestas que tengan que ver con el lado del hardware, sino que la interacción entre los sistemas de compilación comunes (por ejemplo, MSBuild) y un disco de memoria RAM causará algún problema y si hay otros riesgos que debo tener en cuenta.


Acabo de realizar algunas pruebas en mi "servidor de compilación" (en realidad, un script de Powershell) que verifica 3600 archivos de Subversion, los compila (DOT.NET) y ejecuta algunas pruebas de unidad.

En mi disco duro normal (no súper rápido) el proceso toma 35 segundos.

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

Al reformatearlo con NTFS, se reduce a 30 segundos.

Pero usar un SSD (en mi caso, un OCZ Vertex 2) solo toma 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 incluso ser más rápida que un disco RAM, lo que me sorprendió.


Mientras tengas suficiente memoria, es algo muy sensato.

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