Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoBeppe Donati Modificato 9 anni fa
1
Stage estivo di Informatica 2006 Studenti: Giorgio Cambie' Matteo Sciarra Tutor: Giuseppe Fabio Fortugno
2
Obiettivo del corso Misurare i tempi di elaborazione di un set di dati allo scopo di ottimizzare le operazioni di lettura e scrittura in locale e via rete ad alta velocita'
3
Descrizione dell'apparato utilizzato Il server utilizzato nell'esperimento e' un IBM X Series modello 335 dotato di due dischi SCSI in modalita' raid 0 con interfaccia di rete Ethernet Gigabit. I client utilizzati sono IBM X Series modello 335 con interfaccia di rete Fast Ethernet. Lo switch di rete e' un CISCO Catalyst modello 4506.
4
Descrizione del linguaggio C Il linguaggio C e' un linguaggio di medio livello che ha sostituito l'Assembler da molti anni. Esso consente un controllo del terminale molto piu' profondo di qualsiasi altro linguaggio di programmazione. E' perfettamente integrato in Unix. E' in grado di far comunicare processi locali e remoti tra di loro. Inoltre, consente un accesso in profondita' nel nucleo di Unix permettendo un altissimo controllo sul sistema operativo.
5
Tabelle
7
Lettura in Locale Scrittura in Locale
8
Tempo reale in Rete Tempo reale in Locale
10
File sorgente #include main (int argc,char *argv[]) { int ii=0,a,i,buf,v[32768]; float t=0.0, t1=0.0, t2=0.0; int *adv; int fp; unsigned n; adv=&v[0]; t=CLOCKS_PER_SEC; ========> #include main (int argc,char *argv[]) { int ii=0,a,i,buf,v[32768]; float t=0.0, t1=0.0, t2=0.0; int *adv; int fp; unsigned n; adv=&v[0]; t=CLOCKS_PER_SEC; ========>
11
if(argc==2){ buf=atoi(argv[1]); if(buf==512|| buf==1024|| buf==2048 || buf==4096||buf==8192|| buf==16384|| buf==32768)ii=1; } for (i=0; i<32768; i++) v[i]=random(); while(ii==0) { printf("\n Inserisci il valore del blocksize = "); scanf ("%i", &buf); switch (buf) { case 512: ii=1; break; case 1024: ii=1; break;========> if(argc==2){ buf=atoi(argv[1]); if(buf==512|| buf==1024|| buf==2048 || buf==4096||buf==8192|| buf==16384|| buf==32768)ii=1; } for (i=0; i<32768; i++) v[i]=random(); while(ii==0) { printf("\n Inserisci il valore del blocksize = "); scanf ("%i", &buf); switch (buf) { case 512: ii=1; break; case 1024: ii=1; break;========>
12
case 2048: ii=1; break; case 4096: ii=1; break; case 8192: ii=1; break; case 16384: ii=1; break; case 32768: ii=1; break; default: printf("\n Valori ammessi: 512 1024 2048 4096 8192 16384 32768 "); break; } ========> case 2048: ii=1; break; case 4096: ii=1; break; case 8192: ii=1; break; case 16384: ii=1; break; case 32768: ii=1; break; default: printf("\n Valori ammessi: 512 1024 2048 4096 8192 16384 32768 "); break; } ========>
13
fp=creat("uscita_mg",O_CREAT | S_IRWXU); t1=clock()/t; for (i=0; i<(512*1024*1024)/buf; i++) { n=write (fp,adv,buf); if(n!=buf)printf("\n Errore di scrittura del file \n"); } close(fp); t2=clock()/t-t1; printf("\n\n Il tempo necessario a scrivere 500 MB di numeri random e'= %9.5f \n",t2); fp=open ("uscita_mg",O_RDONLY); t1=clock()/t; ========> fp=creat("uscita_mg",O_CREAT | S_IRWXU); t1=clock()/t; for (i=0; i<(512*1024*1024)/buf; i++) { n=write (fp,adv,buf); if(n!=buf)printf("\n Errore di scrittura del file \n"); } close(fp); t2=clock()/t-t1; printf("\n\n Il tempo necessario a scrivere 500 MB di numeri random e'= %9.5f \n",t2); fp=open ("uscita_mg",O_RDONLY); t1=clock()/t; ========>
14
for (i=0; i<(512*1024*1024)/buf; i++) { n=read(fp,adv,buf); if(n!=buf)printf("\n Errore di lettura %d byte letti \n",n); } close(fp); t2=clock()/t-t1; printf("\n\n Il tempo necessario a leggere un file di 500 MB di numeri random e'= %9.5f \n",t2); exit (0); } for (i=0; i<(512*1024*1024)/buf; i++) { n=read(fp,adv,buf); if(n!=buf)printf("\n Errore di lettura %d byte letti \n",n); } close(fp); t2=clock()/t-t1; printf("\n\n Il tempo necessario a leggere un file di 500 MB di numeri random e'= %9.5f \n",t2); exit (0); }
15
Conclusioni Scrivendo e leggendo in locale, maggiore e' il blocksize e minore e' il tempo impiegato dalla macchina. Confrontando il valore dei tempi effettivamente impiegati dalla macchina per compiere il lavoro, tra Locale e Remoto il Locale e' piu' veloce, raggiungendo la massima velocita' rispettivamente a 8192kb e 2148kb. Tuttavia un blocksize di 8192kb e' ottimo per entrambi i sistemi. Infine, quando sono piu' macchine a scrivere simultaneamente sulla stessa macchina ricevente il blocksize migliore e' di 512kb.
16
GRAZIE PER L'ATTENZIONE !
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.