Ho un'app C (VStudio 2010, win7 64bit) in esecuzione su una macchina con due chip xeon, ovvero 12 core fisici e 24 logici e 192 gig di ram. MODIFICA: il SO è win7 (cioè Windows 7, 64 bit).Ottimizzazione di enormi scritture su disco
L'app dispone di 24 thread (ogni thread ha il proprio nucleo logico) che esegue calcoli e riempie una parte diversa di una massiccia struttura a C. La struttura, quando tutti i fili sono finiti (e i fili sono tutti perfettamente bilanciati e quindi completi allo stesso tempo), è di circa 60 gigabyte.
(Ho il controllo sulla configurazione hardware, quindi sto per utilizzare 6 unità 2tb con RAID 0, il che significa che i limiti fisici di scrittura saranno approssimativamente 6 volte la velocità di scrittura sequenziale media, o circa 2 gig/secondo .)
Qual è il modo più efficiente per ottenere questo su disco? Ovviamente, il tempo di I/o sminuisce il tempo di elaborazione. Dalla mia ricerca su questo argomento, sembra come scrivere() (al contrario di fwrite()) è la strada da percorrere. Ma quali altre ottimizzazioni posso fare sul lato software, in termini di impostazione delle dimensioni del buffer, ecc. Sarebbe più efficiente?
Si prega di aggiungere un tag su quale lingua si desidera scrivere in. Che aiuta gli altri a trovare facilmente questa domanda. – Buddha
Quanto dura il calcolo? –
Vedo un tag 'mmap'. È disponibile per il tuo sistema? –