Stage di Informatica
Studenti:
Karen Jomayra Montes Rua
Gabriele Scolastri
Tutor:
Giuseppe Fabio Fortugno
Stage di Informatica
•Introduzione sistema operativo Unix (nascita,
sviluppo, utilizzo)…
•Funzionamento dei file system, compact disc, disco
rigido.
•Il sistema operativo, fase di bootstrap, ram...
•Network, LAN, connessione ethernet (fase analogica
e digitale), protocolli tcp/ip…
•Linguaggio C, programmazione…
•Misura della velocita’ di NFS v3…
Linguaggio C
E’ un linguaggio di programmazione di medio livello. Ciò
significa che il linguaggio C è articolato e potente quasi
come il linguaggio della macchina (assembler), ma meno
complesso.
Può essere scritto con programmi di scrittura come vi,
Emacs e Pico, per poi essere compilato da Unix attraverso
il compilatore.
La sua potenza permette sia di modificare parti del
sistema operativo che di crearne uno ex novo!!
Test di Velocita’ di NFS
L’obbiettivo è calcolare la velocità con cui uno o
più client riescono a lavorare in contemporanea
su un server & quale sia il blocksize (pacchetto
di dati) migliore per ottenere maggiori velocità.
• 5 blocksize: 512, 1024, 2048, 4096, 8192 byte
• max 4 Client
• Tipo connessione: NFS su TCP/IP
Elenco componenti usati
nel test di velocita’
HARDWARE:
1 Switch Cisco 4500 con porte Gigabit Ethernet
1 IBM xSeries 340
Processore Intel Xeon a 2 GHz
1024 Mbyte Ram
Due dischi SCSI FW da 36 Gbyte
Gigabit Ethernet Card in fibra ottica
4 IBM xSeries 330
Processore Intel Xeon 2 Ghz
512 Mbyte RAM
Un disco SCSI da 9 Gbyte
Gigabit Ethernet Card in rame
SOFTWARE:
Server
Linux Suse Enterprise Server 9.2
Kernel ver. 2.6.5
NFS Server V3
Client
Linux Suse Enterprise Server 9.2
Kernel ver. 2.6.5
NFS Client V3
Gnu C Compiler ver.3.3.3
Struttura del cluster linux su
cui sono state fatte le prove
di scrittura e lettura
lxmaster01
NFS server
Switch Cisco 4500
lxmaster02
lxmaster05
lxmaster03
Gigabit-Ethernet
SCSI Fast Wide 160MB/s
lxmaster04
Struttura logica del cluster
lxmaster01
/work
/
work
NFS server
stage
cl01 cl02 cl03 cl04
NFS Client
NFS Client
lxmaster02
lxmaster05
NFS Client
NFS Client
lxmaster03
lxmaster04
Gigabit-Ethernet
SCSI Fast Wide 160MB/s
Programma C di scrittura
#include<stdio.h>
#include<stdlib.h>
#include<fcntl.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<time.h>
#include<bits/time.h>
k=atoi(argv[1]);
switch(k)
{
case 1:
n=512;
case 2: n=1024;
case 3:
n=2048;
case 4:
n=4096;
case 5:
n=8192;
default:
n=512;
}
break;
break;
break;
break;
break;
fd=creat(fn,type)
main(int argc,char *argv[])
{
int n, v[8192], i, k, m=512000000, rc=0;
time_t t1,t2,t3;
double t;
int fd;
int *pn;
i=0;
do{
v[i]=random();
i++;
}while(i<n);
fd=creat("misura", S_IRUSR|S_IWUSR|S_IRGRP);
pn=&v[0];
printf("\n Inizio scrittura del file \n");
t1=time(NULL);
if(argc==1)
{
printf("\n Inserisci una delle seguenti opzioni: \n");
printf("\n 1 -> 512 Byte Block ");
printf("\n 2 -> 1024 Byte Block ");
printf("\n 3 -> 2048 Byte Block ");
printf("\n 4 -> 4096 Byte Block ");
printf("\n 5 -> 8192 Byte Block \n\n ");
exit(1);
}
for(k=0; k<(m/n); k++){
rc=write(fd, pn, n);
}
t2=time(NULL);
t=difftime(t2,t1);
printf("\n Fine scrittura del file \n");
printf("\n Il tempo che il computer ha “);
printf(“ impiegato per scrivere il file e` %7.3f s\n",t);
close(fd);
}
Programma C di lettura
#include<stdio.h>
#include<stdlib.h>
#include<fcntl.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<time.h>
#include<bits/time.h>
k=atoi(argv[1]);
switch(k)
{
case 1:
n=512;
case 2: n=1024;
case 3:
n=2048;
case 4:
n=4096;
case 5:
n=8192;
default:
n=512;
}
break;
break;
break;
break;
break;
main(int argc,char *argv[])
{
int n, v[8192], i, k, m=512000000, rc=0;
time_t t1,t2,t3;
double t;
int fd;
int *pn;
i=0;
do{
v[i]=random();
i++;
}while(i<n);
fd=open("misura", O_RDONLY);
pn=&v[0];
printf("\n Inizio lettura del file \n");
t1=time(NULL);
if(argc==1)
{
printf("\n Inserisci una delle seguenti opzioni: \n");
printf("\n 1 -> 512 Byte Block ");
printf("\n 2 -> 1024 Byte Block ");
printf("\n 3 -> 2048 Byte Block ");
printf("\n 4 -> 4096 Byte Block ");
printf("\n 5 -> 8192 Byte Block \n\n ");
exit(1);
}
for(k=0; k<(m/n); k++){
rc=read(fd, pn, n);
}
fd=open(fn,type)
t2=time(NULL);
t=difftime(t2,t1);
printf("\n Fine lettura del file \n");
printf("\n Il tempo che il computer ha “);
printf(“ impiegato per leggere il file e` %7.3f s\n",t);
close(fd);
}
Misure effettuate sul cluster linux
Scrittura
Velocita’ con 1
client
(Mbyte/s)
Velocita’ con 2
client
(Mbyte/s)
Velocita’ con 3
client
(Mbyte/s)
Velocita’ con 4
client
(Mbyte/s)
512
13,84
5,38
4,10
5,20
1024
13,80
8,25
5,41
5,30
2048
12,80
7,10
4,10
3,60
4096
9,25
3,90
3,60
3,60
8192
8,80
3,70
3,56
3,40
Blocksize
(Byte)
Lettura
Velocita’ con 1
client
(Mbyte/s)
Velocita’ con 2
client
(Mbyte/s)
Velocita’ con 3
client
(Mbyte/s)
Velocita’ con 4
client
(Mbyte/s)
512
9,07
4,91
3,26
2,58
1024
10,01
5,63
3,85
2,93
2048
9,61
5,69
3,76
2,92
4096
9,65
5,62
3,76
3,12
8192
9,54
5,61
3,77
2,90
Blocksize
(Byte)
NFS V3 Client Speed
Dal punto di vista del
Client questo e’ il valore
migliore da impostare in
scrittura
14,00
10,00
8,00
6,00
4,00
2,00
0,00
512
1024
2048
NFS V3 Server Throughput
Client = 1
Clinet = 2
Client = 3
Client = 4
4096
Blocksize (bytes)
8192
25
Throughput (Mbyte/s)
Speed (Mbyte/s)
12,00
Dal punto di vista del
Server questo e’ il valore
che massimizza le scritture
20
15
10
Client = 4
5
Client = 3
Clinet = 2
0
512
1024
Client = 1
2048
Blocksize (Bytes)
4096
8192
NFS V3 Client Speed
12,00
Dal punto di vista del
Client questo e’ il valore
migliore da impostare
in lettura
8,00
6,00
4,00
NFS V3 Server Throughput
2,00
Client = 1
Clinet = 2
Client = 3 14
Client = 4
0,00
512
1024
Blocksize (Byte)
2048
4096
8192
12
Throughput (MByte/s)
Speed (MBytes/s)
10,00
10
8
6
4
2
Dal punto di vista del
Server questo e’ il valore che
massimizza le letture
Client = 4
Client = 3
Clinet = 2
Client = 1
0
512
1024
Blocksize (Bytes)
2048
4096
8192
Conclusioni:
I.
Se un filesystem NFS esporta
dati in lettura/scrittura tra piu’
di un client sara’ meglio usare
un blcksize pari a 1024
II.
Se invece il filesystem servira’
per dati readonly avremo il
massimo throughput con un
blocksize pari a 4096 Byte.
Blocksize del filesystem
SCSI vs NFS
120,00
NFS Client
SCSI locale
Speed (MByte/s)
100,00
80,00
60,00
40,00
20,00
0,00
512
1024
2048
Blocksize (byte)
4096
8192
Avendo piu’ tempo…
client
Client NFS
Tcp/ip buffer
Client NFS
Tcp/ip buffer
Client NFS
Tcp/ip buffer
Client NFS
Tcp/ip buffer
server
Tcp/ip buffer
Server NFS
e…
S.O. buffers
NFS task
Tcp/ip
buffer
NFS task
Server NFS
NFS task
NFS task
SCSI Buffer
Stage di Informatica
Grazie per l’attenzione!
Scarica

Stage di Informatica