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


This topic: Sistemioperativi1 > LineeGuida
Topic revision: r1 - 2001-12-03 - AntonioValletta
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 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