Salve gente.
Fra una revisione della tesi ed un’altra (grazie alla Bau per l’eccellente opera di correttrice-bozze ^^) sto scrivendo un programmillo tipo benchmark in C per testare la velocità di lettura/scrittura su dischi & co.
Volevo testare un po’ di chiamate di accesso in lettura/scrittura seguendo lo stile C e quello UNIX (che non sono la stessa cosa :P )
Il problema non è scrivere i test (per ora ho scritto solo quelli ad accesso sequenziale) quanto quello di trovare un modo universale e portabile per disabilitare le cache dei file o delle pagine di memoria: se scrivo un file e immediatamente lo leggo, a meno di usare un SO della mutua, la lettura è pressochè istantanea perchè è quasi sicuro che il file appena creato risieda anche in qualche file cache del SO.
Ci sono diversi trucchetti, assolutamente non portabili, per disabilitare le cache su specifici SO ma a quanto pare non esiste un modo standard e universale per fare ciò (sigh -.-’).
Ho guardato un bel po’ di chiamate “strane” (posix_fadvise, posix_madvise, …) ma nessuna che faccia al caso mio…
Max ha suggerito (grazie) un approccio pratico, ossia accessi random e mi sa che seguirò questo hint. In aggiunta proverò a “sporcare” la cache del SO rimpinzandola di file creati/distrutti a caso prima dei test veri e propri.
Si accettano suggerimenti…
PS: prima di scrivere il sopra-citato programmmillo, ho provato sia Bonnie che Bonnie++, due bei benchmark (seri) che vi (stra)consiglio. Poi però è prevalsa la voglia di farmi le cose da solo. Ghghgh…
Il programmino è solo all’inizio (pochissime righe di codice). Se avrò tempo+voglia, ho in mente qualche cosina interessante.



Posted by Gufo on 26 Marzo 2008 at 21:11
Il codice sorgente di hdpard dovrebbe fare al caso tuo, c’è un’opzione per fare la lettura in cache e una off-cache. Magari trovi solo il metodo per linux, ma non si sa mai…
Posted by jp on 27 Marzo 2008 at 10:50
Denghiu. Controllerò. ^^