<body bgcolor="#FFFFFF"> Ecco una serie di annotazioni su quelli che possono essere i parametri su cui fare uno studio nello svolgimento del progetto. <br>Questa lista e' da intendersi solo come un insieme minimo di misure da riportare. <br>Sono incoraggiate e bene accette misure (pertinenti) aggiuntive, interpretazioni, grafici e tutto cio' che si pensa <br>possa essere di rilievo. <br> <b>Note Generali</b> <br>Fare diverse prove per ogni misura: distinguere tra misure prese "a freddo" (l'oggetto della misura viene manipolato per la prima volta e non si trova in una qualsiasi cache) e "a caldo" (la misura viene eseguita su un oggetto che si trova in cache). <br>Utilizzare il metodo di misura (times/gettimeofday/cycle_counter) piu' adeguato alla dimensione dell'intervallo di tempo da misurare. <br> <p> <b>Punto n. 1</b> <br><i>Misurare i tempi in millisecondi di lettura dei dati dal disco tramite la primitiva di sistema read e stimare la dimensione ottima per il parametro attuale che contiene i dati letti</i> <ul> <li> Prendere i tempi esclusivamente con la funzione times (accuratezza al centesimo di secondo) e poi fare delle medie</li> <li> Variare la dimensione dei dati letti da 256 byte a 512 kbytes: dimensione ottima = dimensione dopo la quale non si hanno piu' sensibili incrementi di velocita'</li> </ul> <p> <b>Punto n. 2</b> <br><i>Misurare i tempi di esecuzione in microsecondi delle principali primitive di sistema al variare dei parametri in ingresso: open, close, read, write, lseek, mount</i> <ul> <li> open</li> <ul> <li> apertura di un file esistente in sola lettura/in lettura scrittura/troncandolo</li> <li> creazione di un file (che non esisteva) in scrittura</li> <li> creazione di un file (che non esisteva) in scrittura con il flag O_SYNC</li> <li> Misurare i tempi sia per accessi su filesystem locali (ad esmpio /tmp) sia per accessi su server NFS (ad esempio la directory home)</li> </ul> <li> close</li> <ul> <li> chiusura di un file aperto in sola lettura/aperto in lettura-scrittura/aperto con il flag O_SYNC</li> </ul> <li> read</li> <ul> <li> variare la dimensione del buffer da 256 byte a 512 kbytes (il blocksize di ext2 va da 1024 a 4192 bytes)</li> <li> discriminare tra read che richiedono la lettura di un nuovo blocco da disco e read che attingono dalla buffer cache</li> <li> Misurare i tempi sia per accessi su filesystem locali, sia per accessi su server NFS</li> </ul> <li> write</li> <ul> <li> variare la dimensione dei dati scritti da 256 byte a 512 kbytes per un file aperto in scrittura/con il flag O_SYNC</li> <li> Misurare i tempi sia per accessi su filesystem locali, sia per accessi su server NFS</li> </ul> <li> lseek</li> <ul> <li> misurare il tempo della lseek e di una read/write eseguita subito dopo</li> <li> posizionamento oltre la fine del file (estensione del file)</li> </ul> <li> mount</li> <ul> <li> esecuzione del comando /bin/mount tramite fork-execv-wait / tramite system()</li> <li> su diversi filesystem (se possibile)</li> </ul> </ul> <b>Punto n. 3</b> <br><i>Misurare i tempi di esecuzione in microsecondi al variare dei parametri in ingresso delle funzioni di libreria standard del C che invocano l'equivalenti primitive di sistema: fopen, fclose, fread, fwrite, malloc</i> <ul> <li> fopen</li> <ul> <li> apertura di un file esistente in sola lettura/in lettura scrittura/troncandolo</li> <li> creazione di un file (che non esisteva) in scrittura</li> <li> Misurare i tempi sia per accessi su filesystem locali, sia per accessi su server NFS</li> <li> Ripetere gli stessi test della open (quando possibile) in modo da poter confrontare risultati analoghi</li> </ul> <li> fclose</li> <ul> <li> chiusura di un file aperto in sola lettura/aperto in lettura-scrittura</li> </ul> <li> fread</li> <ul> <li> variare la dimensione del buffer da 256 byte a 512 kbytes (blocksize di ext2 da 1024 a 4192 bytes)</li> <li> discriminare tra read che richiedono la lettura di un nuovo blocco da disco e read che attingono dal buffer</li> <li> Misurare i tempi sia per accessi su filesystem locali, sia per accessi su server NFS</li> </ul> <li> fwrite</li> <ul> <li> variare la dimensione dei dati letti da 256 byte a 512 kbytes</li> <li> Misurare i tempi sia per accessi su filesystem locali, sia per accessi su server NFS</li> </ul> <li> fseek</li> <ul> <li> misurare il tempo della fseek e di una fread/fwrite eseguita subito dopo</li> <li> posizionamento oltre la fine del file (estensione del file)</li> </ul> <li> malloc</li> <ul> <li> cronometrare una serie di invocazioni di malloc variando la dimensione dell'allocazione da 256 byte a 512 kbytes.</li> <li>Evidenziare, tramite un grafico, l'andamento "a gradini" del tempo di invocazione al variare della dimensione dell'allocazione e dare una giustificazione.</li> </ul> </ul> </blockquote> -- Users.AntonioValletta - 03 Dec 2001 <br>
This topic: Sistemioperativi1
>
LineeGuida
Topic revision: r1 - 2001-12-03 - AntonioValletta
Copyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki?
Send feedback