Ecco una serie di annotazioni su quelli che possono essere i parametri
su cui fare uno studio nello svolgimento del progetto.
Questa lista e' da intendersi solo come un insieme minimo di misure
da riportare.
Sono incoraggiate e bene accette misure (pertinenti) aggiuntive, interpretazioni,
grafici e tutto cio' che si pensa
possa essere di rilievo.
Note
Generali
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).
Utilizzare il metodo di misura (times/gettimeofday/cycle_counter)
piu' adeguato alla dimensione dell'intervallo di tempo da misurare.
Punto n. 1
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
-
Prendere i tempi esclusivamente con la
funzione times (accuratezza al centesimo di secondo) e poi fare delle medie
-
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'
Punto n. 2
Misurare i tempi di esecuzione
in microsecondi delle principali primitive di sistema al variare dei parametri
in ingresso: open, close, read, write, lseek, mount
-
open
-
apertura di un file esistente in sola
lettura/in lettura scrittura/troncandolo
-
creazione di un file (che non esisteva)
in scrittura
-
creazione di un file (che non esisteva)
in scrittura con il flag O_SYNC
-
Misurare i tempi sia per accessi su filesystem
locali (ad esmpio /tmp) sia per accessi su server NFS (ad esempio
la directory home)
-
close
-
chiusura di un file aperto in sola lettura/aperto
in lettura-scrittura/aperto con il flag O_SYNC
-
read
-
variare la dimensione del buffer da 256
byte a 512 kbytes (il blocksize di ext2 va da 1024 a 4192 bytes)
-
discriminare tra read che richiedono la
lettura di un nuovo blocco da disco e read che attingono dalla buffer cache
-
Misurare i tempi sia per accessi su filesystem
locali, sia per accessi su server NFS
-
write
-
variare la dimensione dei dati scritti
da 256 byte a 512 kbytes per un file aperto in scrittura/con il flag O_SYNC
-
Misurare i tempi sia per accessi su filesystem
locali, sia per accessi su server NFS
-
lseek
-
misurare il tempo della lseek e di una
read/write eseguita subito dopo
-
posizionamento oltre la fine del file
(estensione del file)
-
mount
-
esecuzione del comando /bin/mount tramite
fork-execv-wait / tramite system()
-
su diversi filesystem (se possibile)
Punto n. 3
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
-
fopen
-
apertura di un file esistente in sola
lettura/in lettura scrittura/troncandolo
-
creazione di un file (che non esisteva)
in scrittura
-
Misurare i tempi sia per accessi su filesystem
locali, sia per accessi su server NFS
-
Ripetere gli stessi test della open (quando
possibile) in modo da poter confrontare risultati analoghi
-
fclose
-
chiusura di un file aperto in sola lettura/aperto
in lettura-scrittura
-
fread
-
variare la dimensione del buffer da 256
byte a 512 kbytes (blocksize di ext2 da 1024 a 4192 bytes)
-
discriminare tra read che richiedono la
lettura di un nuovo blocco da disco e read che attingono dal buffer
-
Misurare i tempi sia per accessi su filesystem
locali, sia per accessi su server NFS
-
fwrite
-
variare la dimensione dei dati letti da
256 byte a 512 kbytes
-
Misurare i tempi sia per accessi su filesystem
locali, sia per accessi su server NFS
-
fseek
-
misurare il tempo della fseek e di una
fread/fwrite eseguita subito dopo
-
posizionamento oltre la fine del file
(estensione del file)
-
malloc
-
cronometrare una serie di invocazioni
di malloc variando la dimensione dell'allocazione da 256 byte a 512 kbytes.
- Evidenziare, tramite un grafico, l'andamento "a gradini" del tempo di invocazione
al variare della dimensione dell'allocazione e dare una giustificazione.
--
AntonioValletta - 03 Dec 2001