Tengo una aplicación C (VStudio 2010, win7 64bit) que se ejecuta en una máquina con chips dobles xeon, lo que significa 12 núcleos físicos y 24 lógicos, y 192 gigas de ram. EDITAR: EL SO es win7 (es decir, Windows 7, 64 bit).Optimización de escrituras masivas en el disco
La aplicación tiene 24 hilos (cada hilo tiene su propio núcleo lógico) haciendo cálculos y llenando una parte diferente de una estructura C masiva. La estructura, cuando todos los hilos están terminados (y los hilos están perfectamente equilibrados para que se completen al mismo tiempo), es de aproximadamente 60 gigabytes.
(Tengo control sobre la configuración del hardware, así que voy a usar 6 unidades de 2tb con RAID 0, lo que significa que los límites físicos de escritura serán aproximadamente 6x la velocidad de escritura secuencial promedio, o aproximadamente 2 gig/second .)
¿Cuál es la forma más eficiente de obtener esto en el disco? Obviamente, el tiempo de E/S empequeñecerá el tiempo de cómputo. De mi investigación sobre este tema, parece que escribir() (en lugar de fwrite()) es el camino a seguir. Pero, ¿qué otras optimizaciones puedo hacer por el lado del software, en términos de establecer tamaños de búfer, etc. ¿Sería mmap más eficiente?
Agregue una etiqueta en qué idioma desea escribir. Esto ayuda a que otros encuentren esta pregunta fácilmente. – Buddha
¿Cuánto tiempo tarda el cálculo? –
Veo una etiqueta 'mmap'. ¿Está disponible para tu sistema? –