Programmillo…

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…

iotest alpha 1

Il programmino è solo all’inizio (pochissime righe di codice). Se avrò tempo+voglia, ho in mente qualche cosina interessante. :P

2 Risposte to this post.

  1. 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…

  2. Posted by jp on 27 Marzo 2008 at 10:50

    Denghiu. Controllerò. ^^

Rispondi a questo post