Appunti delle lezioni del 10/04 e 11/04

annuncio pubblicitario
Corso: Gestione ed elaborazione grandi moli di dati
Lezione del: 10-11 aprile 2006
Argomento: Introduzione e Hard Disk
Scribes: Nicola Chemello e Filippo Marchese
1
Introduzione
CONTESTO
Il contesto tecnologico attuale é caratterizzato da una rapida e costante evoluzione delle
tecnologie informatiche. Vedremo che esiste un ”gap”, ovvero una differenza nella velocitá, tra
la potenza delle unitá di elaborazione disponibili e la velocitá (di lettura/scrittura) delle unitá
di memorizzazione (dischi, nastri, cd, ecc.). Questo rende necessario uno studio particolare
sulle tecniche di gestione (efficiente) di grandi moli di dati.
TREND
Una prima ”tendenza” da prendere in considerazione é l’aumento considerevole della quantitá di dati disponibile in formato digitale, soprattutto in contesti scientifici, commerciali e
sociali. ”How much information?” (2003) [HMI] é uno studio che cerca di misurare quanta
nuova informazione viene prodotta ogni anno nel mondo su vari tipi di supporto (stampa, film,
supporti magnetici, supporti ottici); questo studio afferma che nel 2002 sono stati prodotti
5.4 Exabyte (=5.4*1018 byte) e di questi il 92% é immagazzinato su hard disk. Ogni anno
l’informazione prodotta aumenta di circa il 30%. Un’altra misura presente in questo documento riguarda il flusso d’informazione che é di circa 17 Exabyte (il 90% per via telefonica).
Comunque non tutta questa informazione, una volta immagazzinata, viene successivamente letta per una elaborazione. In effetti siamo una societá ”Data rich - information
poor”, ovvero vengono prodotti tanti dati ma la maggior parte di questi non viene utilizzata
per accrescere la conoscenza. Molti archivi rappresentano quindi delle ”data tomb”, tombe
dei dati.
CAUSE
Le principali cause di questo aumento esponenziale dei dati disponibili possono essere
ricercate in:
• Progresso tecnologico (potenza di calcolo e capacitá di memorizzazione a basso costo)
1
• Informatizzazione di molte attivitá prima gestite attraverso formati cartacei o trasmissione orale. Praticamente tutte le aziende sono attualmente gestite da grandi Sistemi
Informativi Integrati o ERP (Enterprise Resuorce Planning).
• Avvento delle reti che permettono la costruzione di sistemi distribuiti per l’elaborazione,
memorizzazione e lo scambio di informazione. Ovvero non ci si limita alla memorizzazione ed alla elaborazione dei dati su un singolo elaboratore, ma si costruiscono degli
”Overlay Computer”, piattaforme virtuali basate su una serie di elaboratori collegati
da una rete. La differenza con le macchine parallele é che le seconde sono state appositamente costruite in maniera omogenea per applicazioni specifiche, invece un overlay
computer unisce macchine diverse (un esempio é il p2p). Una ulteriore generalizzazione
di Overlay Computer é il Global Computing, ovvero la creazione di una rete virtuale
tra macchine qualsiasi e profondamente diverse tra loro (sensori, pc, telefoni, ecc.).
PROBLEMATICHE
La memorizzazione di grandi moli di dati crea una serie di problematiche sia per quanto
riguarda le risorse hardware (memorizzazione fisica) che software (compressione/analisi). In
particolare, nel corso tratteremo i seguenti argomenti:
1. Sistemi di memorizzazione affidabili, efficienti e capienti.
- Dischi
- Raid
- Memoria terziaria
2. Tecniche di elaborazione ad alte prestazioni
- Modelli di calcolo
- Algoritmi fondamentali
- Strutture dati
3. Compressione
- Codifiche aritmetiche
- Codifiche Burrows Wheeler
- Compressione con dizionario
4. Modalitá di analisi dei dati per l’elaborazione di informazione
- Data mining: estrazione di informazione utile e nuova da grandi quantitá di dati,
Ricerca pattern frequenti e di regole associative, Classificazione, Clustering
- Data Stream: analisi di grandi quantitá di dati che non sono memorizzate ma sono
consumate online
2
EVOLUZIONE DI PROCESSORI E MEMORIE
Definizione 1 ”Legge di Moore”: ”L’evoluzione tecnologica cui si é assistito fin’ora ha comportato un raddoppio del valore dei seguenti parametri circa ogni 18 mesi” (aumento del 56%
all’anno):
- Densitá dei transistori su chip, densitá memoria DRAM, densitá della superficie dei
dischi
- Numero di operazioni al secondo eseguite da un processore (non si parla del solo aumento
del clock che incide per un 30% all’anno)
La legge di Moore originale era riferita alla densitá dei transistor su un chip, ma é stato osservato che anche altri parametri sono cresciuti con la stessa velocitá. Non tutte le componenti
informatiche peró si evolvono secondo la tendenza dettata da tale legge: ad esempio il tempo
di accesso alla memoria DRAM si migliora solo del 7% ogni anno cosı́ come il tempo di latenza
dei dischi. C’é stata quindi un’evoluzione maggiore da parte dei dispositivi che riguardano
l’elaborazione ed il consumo dei dati rispetto all’evoluzione dei dispositivi di memorizzazione
degli stessi (GAP). La situazione in realtá é meno problematica di quanto potrebbe sembrare
per il
Definizione 2 ”Principio di localitá”: programmi ”sensati” accedono a porzioni ”limitate”
di memoria in ”brevi” intervalli di tempo.
Distinguiamo tra ”Localitá temporale” che riguarda il riuso ravvicinato nel tempo degli stessi
dati (esempio variabile contatore di un ciclo for) e ”Localitá spaziale” che riguarda l’utilizzo
di dati fisicamente contigui in brevi intervalli di tempo.
Questo principio suggerisce che un utilizzo parsimonioso della memoria permette una incidenza limitata del gap tra le prestazioni del processore e quelle delle memorie. In particolare
é possibile organizzare la memoria di un elaboratore in maniera gerarchica, realizzando delle
memorie sempre piú veloci e meno capienti man mano che ci si avvicina al processore.
3
Le varie memorie sono realizzate con tecnologia diverse, per questo avvicinandosi alla CPU
aumentano costo e velocitá mentre contemporaneamente diminuisce la taglia. Se non avessi la
localitá dei dati ogni volta dovrei prendere questi dagli strati lenti e capienti dove essi risiedono
inizialmente (es. RAM o disco) e portarli nella CPU e questo causerebbe lo stato di idle del
processore per la maggior parte di tempo. All’aumentare del gap tra memoria e processore
aumentano il numero di livelli di memoria. In pratica questo meccanismo di creazione di
vari livelli di memoria serve per portare i dati il piú ”vicino” possibile ai dispositivi che li
utilizzeranno. Questo stessa principio viene utilizzato nel web dove attraverso l’utilizzo dei
proxy si portano le pagine piú ”vicine” agli utenti web.
4
2
Gli Hard-Disk
L’hard disk é un dispositivo utilizzato per la memorizzazione a lungo termine dei dati in un
computer. É costituito fondamentalmente da uno o piú dischi in alluminio o vetro (platter),
rivestiti di materiale ferromagnetico in rapida rotazione e da due testine per ogni disco (una
per lato), poste a piccolissima distanza dalla superficie del disco stesso in grado di leggere e
scrivere i dati. La testina é tenuta sollevata dall’aria mossa dalla rotazione stessa dei dischi
che puó superare i 15.000 giri al minuto.
Ideato nel 1956 da IBM con il nome di Random Access Method of Accounting and Control (RAMAC) era costituito da 50 dischi del diametro di 24 pollici (circa 60 cm) e poteva
immagazzinare circa 5 megabyte di dati. La denominazione originaria era fixed disk (disco
fisso), il termine hard disk nacque intorno al 1970 per contrapposizione coi neonati floppy
disk.
5
La memorizzazione dei bit avviene con la seguente modalitá:
Nell’induttore presente nella testina di scrittura viene prodotta una corrente che genera
un campo magnetico. La corrente nella testina cambia direzione ad ogni bit pari ad ’1’,
mentre rimane invariata se viene inviato uno ’0’. Per quanto riguarda il processo di lettura
viene attuato il processo complementare, la magnetizzazione del supporto induce una corrente
nell’induttore, e tale corrente sará convertita in bit ’0’ oppure ’1’ dall’elettronica presente nel
disco rigido. In ogni hard disk i dati sono memorizzati in finissime bande concentriche, ognuno
di questi anelli é chiamato traccia (track).
Ogni traccia viene divisa in diversi settori (solitamente di 512 byte) separati da dei GAP.
Ogni settore é definito da un demarcatore magnetico ed ha un proprio ID, inoltre ognuno ha
6
un header ed un error correction code (ECC).
Un insieme di tracce su dischi diversi aventi lo stesso raggio é definito cilindro, in pratica
é l’insieme delle tracce che possono essere lette/scritte senza che vengano spostate le testine
(in figura é l’anello bianco).
FUNZIONAMENTO DI UN HARD DISK
Il disco contiene al suo interno una logic board che congiuntamente all’interfaccia dell’elaboratore
svolge funzioni di controllo e di collegamento tra il disco ed il resto del sistema.
I primi hard disk non avevano questo tipo di elettronica integrata e quindi il controllo
era affidato alla sola interfaccia esterna che, dovendo controllare anche piú dispositivi molto
eterogenei tra loro, non utilizzava al massimo le potenzialitá di ogni diverso hard disk.
7
L’interfaccia di collegamento tra l’hard disk e la scheda madre (o, piú specificatamente,
il controllore) puó influenzare le prestazioni perché specifica la velocitá massima alla quale
le informazioni possono essere trasferite da o verso l’hard disk. Le moderne interfacce tipo
ATA133, Serial ATA o SCSI possono trasferire centinaia di megabyte per secondo, molto piú
di quanto qualunque singolo hard disk possa fare, e quindi l’interfaccia non é in genere un
fattore limitante. Il discorso puó cambiare nell’utilizzo di piú dischi in configurazione RAID,
nel qual caso é importante utilizzare l’interfaccia piú veloce possibile, come per esempio la
Fibre channel da 2 Gb/s
Per quanto riguarda la lettura, le testine provvedono a recuperare dal supporto magnetico
i dati e questi vengono trasferiti tramite l’interfaccia sul BUS. Questo tragitto non é diretto,
ma i dati vengono prima copiati su di una cache interna alla logic board, chiamata buffer o
hard disk cache. Il buffer é una piccola memoria cache (in genere di alcuni megabyte) che ha il
compito di memorizzare gli ultimi dati letti o scritti dal disco. Nel caso in cui un programma
legga ripetutamente le stesse informazioni, queste possono essere reperite nel buffer invece che
dal disco. Essendo il buffer un componente elettronico piuttosto che meccanico la velocitá di
trasferimento é molto maggiore. Questo tipo di memoria, anche se prende il nome di cache, é
realizzata con tecnologia DRAM ed ha una taglia tra il megabyte e la decina di MB. Questo
fatto non é una penalizzazione in quanto una memoria piú veloce sarebbe ”sprecata” data la
lentezza dei dispositivi di memoria secondaria. Sono due i motivi fondamentali che spingono
all’utilizzo del buffer invece di una trasmissione diretta:
1. Il buffer permette il trasferimento dei dati letti dal disco anche se il bus é occupato, e
mantiene i dati da scrivere sul disco ritardandone l’effettivo trasferimento
2. Funzione di Prefetch: é possibile prevedere quali saranno i dati richiesti nell’immediato
futuro e si inizia la lettura prima dell’effettiva richiesta
Per quanto riguarda le interfacce, quella piú comune é la IDE (Integrated Drive Electronics), poi evolutasi in EIDE (Enhanced IDE) e ATA (Advanced Technology Attachment).
Un altro tipo di interfaccia é la SCSI (acronimo di Small Computer System Interface),
un’interfaccia standard progettata per realizzare il trasferimento di dati fra diversi dispositivi interni di un computer collegati fra di loro tramite un bus e solitamente presenta un
secondo buffer di memoria.
Negli ultimi anni, con l’evoluzione delle periferiche di memorizzazione, l’interfaccia ATA
ha mostrato i suoi limiti tecnologici e quindi é stata sostituita da una nuova versione chiamata
Serial ATA. Questa nuova interfaccia ha come principale caratteristica quella di trasmettere i
dati in modo seriale e quindi invece di utilizzare quaranta fili per trasmettere i dati ne utilizza
solo due, uno per trasmettere i dati e uno per ricevere, oltre a due fili per le masse. In realtá
il cavo é a sette fili dato che lo standard utilizza anche alcuni fili come segnali di controllo.
Recentemente nei dischi SATA é stata implementata una tecnologia ereditata dai dischi SCSI:
l’NCQ (Native Command Queuing): ogni disco invia una richiesta tramite la CPU e, se il
8
dato non é presente in una delle cache, le testine dell’hard disk si posizionano in modo da
potere iniziare la lettura dei dati. Se occorre accedere a una serie di dati non sequenziali
distribuiti in varie zone del disco, le testine dovranno saltare da un cilindro all’altro, avanti e
indietro.
Oltre al buffering interno all’hard disk esiste un altro meccanismo che consente di salvare
i dati recentemente acceduti dal disco in una area di memoria piú vicina alla CPU. Questa
memoria, chiamata soft disk cache, consiste in una porzione della memoria RAM riservata a
tale scopo e questo meccanismo, che puó essere considerato il complementare della memoria
virtuale, é quello cui di si solito ci si riferisce con il termine disk cache, e non al buffer interno
al disco.
L’influenza della memoria cache sulle prestazioni di un disco varia a seconda delle operazioni che vengono effettuate, in particolare:
- Nel caso di operazioni di lettura (READ) é sempre utile, in quanto prelevo i dati dalla
memoria cache senza dover attendere il tempo di trasferimento dal disco fisico.
- Nel caso di operazioni di scrittura (WRITE) la cache puó funzionare secondo due
modalitá: WRITE BACK in base alla quale i dati non vengono scritti immediatamente su
disco anche se al sistema viene data la conferma di avvenuta scrittura e posso incorrere in
dei problemi nel caso in cui venga a mancare l’alimentazione a cache non vuota (perdo i dati
non scritti); WRITE THROUGH in base alla quale ogni volta che scrivo qualcosa la scrittura
avviene in tempo reale e non rischio di incorrere nel problema visto precedentemente. Con la
seconda modalitá é come se la cache non venisse utilizzata in scrittura.
PRESTAZIONI DEI DISCHI
Gli hard disk moderni hanno capacitá e prestazioni enormemente superiori a quelle dei
primi modelli, ma restano comunque molto al di sotto delle prestazioni dei componenti elettronici che compongono il resto del computer. Per questo motivo, l’hard disk é spesso la
causa principale del rallentamento di un computer. I parametri principali da tenere in considerazione sono: la capacitá, il tempo di accesso e la velocitá di trasferimento.
La capacitá puó essere aumentata incrementando la densitá con cui le informazioni vengono memorizzate sui dischi, usando dischi piú grandi, o usando un numero maggiore di dischi.
La capacitá si misura indicando l’AREAL DENSITY, cioé il numero di bit memorizzabili per
pollice quadrato (BPSI, bip per square inch); il primo hard disk aveva una densitá di circa
2000bits/in2 , oggi in laboratorio si stanno definendo tecnologie in grado di immagazzinare
fino a 35Gbit/in2 . L’AREAL DENSITY é data dal prodotto di due componenti: TRACK
DENSITY e LINEAR DENSITY.
• La Track density é il numero di tracce per pollice (attualmente dell’ordine di O 105 ).
• La Linear density é in numero di bit per pollice su una traccia (attualmente dell’ordine
9
di O 106 ).
Facendo la moltiplicazione tra i due fattori ottengo l’AREAL DENSITY (attualmente dell’ordine
di O 1010÷11 . Come si puó intuire le tracce in una faccia non hanno tutte la stessa lunghezza,
ma nelle zone esterne sono piú lunghe. La densitá del disco é organizzata seguendo l’approccio
Zoned Bit Recording:
• raggruppamento delle tracce in zone costituite da tracce adiacenti
• tracce della stessa zona hanno lo stesso numero di settori per traccia
• il numero di settori per traccia aumenta andando verso zone esterne anche se la densitá
delle zone esterne risulta minore delle zone interne
Il tempo di accesso é la variabile piú importante nel determinare le prestazioni di un
hard disk. Si tratta del tempo medio necessario per posizionarsi all’inizio di un blocco di
dati da leggere/scrivere. Il tempo impiegato dipende dal fatto che la testina deve spostarsi
e contemporaneamente il disco deve girare finché il dato in questione non si trovi sotto la
testina (latenza rotazionale). I produttori cercano perció di realizzare testine sempre piú
leggere (che possono spostarsi piú in fretta perché dotate di minore inerzia) e dischi che
girano piú velocemente. Il tempo di accesso tipico per un hard disk consumer é nell’ordine
dei 10 millisecondi. Per un hard disk ad alte prestazioni (15.000 giri) é di 3 o 4 millisecondi.
Il tempo d’accesso é ottenuto dalla somma di diversi contributi:
• Command overhead: tempo trascorso per far arrivare il comando al disco
• Seek time: tempo di posizionamento radiale della testina sulla traccia giusta (1-10ms)
• Settle time: tempo d’assestamento della testina una volta raggiunta la posizione voluta
• Latency time: tempo necessario affinché il disco ruotando porti il blocco desiderato sotto
la testina; solitamente si misura la latency media che é il tempo che il disco impiega a
compiere mezzo giro (1-5ms)
10
La velocitá di trasferimento (Transfer Rate) é la quantitá di dati che l’hard disk é teoricamente in grado di leggere o scrivere sul disco in una determinata unitá di tempo (in genere si
prende 1 secondo come riferimento). Usare dischi che ruotano piú velocemente o incrementare
la densitá di memorizzazione porta ad un miglioramento diretto della velocitá di trasferimento.
C’é da dire che, a parte casi particolari, la velocitá di trasferimento teorica viene raramente
raggiunta e il tempo di accesso é quello che maggiormente influenza le prestazioni di un hard
disk.
Esempio
Velocitá di rotazione: 12000 rpm (giri al minuto)
Settori per traccia: 300
Le rotazioni per secondo sono 12000/60, ovvero una ogni 5ms, quindi il tempo di latenza
medio sará 2.5ms.
Parlando di Transfer Rate distinguiamo diverse tipologie:
• INTERNAL TRANSFER RATE (ITR): tempo di trasferimento dei dati dal disco al
buffer, si misura in Mbit/s con la seguente formula
IT R =
velocitádirotazione ∗ #settoripertraccia ∗ 512byte ∗ 8
60s ∗ 106
Con i valori dell’esempio precedente ottengo un transfer rate di 245Mbits/s, quindi per
trasferire un blocco di dati di 4kb si impega un tempo nell’ordine dei 100µs, dominato
dal tempo di accesso. Se invece devo trasferire grandi quantitá di dati (che non stanno
cioé in una sola traccia) dovró tener presente la necessitá di cambiare traccia; introduco
quindi una nuova misura:
• SUSTAINED INTERNAL TRANSFER RATE (STR) MByte/s: é la velocitá di trasferimento di grandi quantitá di dati (sequantial reads/writes) con l’ipotesi fondamentale
che i dati siano memorizzati ”bene” sul disco, cioé utilizzo un intero cilindro prima di
passare al successivo. Questo parametro é influenzato anche da due nuovi fattori:
- HEAD SWITCH TIME (HST): tempo necessario per cambiare testina attiva
- CYLINDER SWITCH TIME (CST): tempo necessario per posizionare le testine
sul nuovo cilindro.
e si misura come (di solito in MByte/s):
ST R =
#f acce ∗ #settoripertraccia ∗ 512
#f acce ∗ temporotazione + HST ∗ (#f acce − 1) + CST
11
Oltre a questi parametri sul transfer rate interno al disco (tampo di accesso, tempo di
trasmissione dei dati dal disco al buffer) dovrebbe essere considerato anche il tempo di trasmissione dei dati dal buffer alla RAM (External Transfer Rate), ma questo ultimo parametro é
dominato dal precedente e quindi viene spesso trascurato.
Bibliografia
[HMI]
”How much information?”, 2003
Sito web http://www.sims.berkeley.edu/research/projects/how-much-info-2003/
[PCG01]
The PC Guide, Versione 2.2.0, 2001.
Sito web http://www.pcguide.com
[MHPC]
Micro House PC Hardware Library.
Sito web http://www.alasir.com/books/hards/009-011.html
[NTFS]
NTFS.com
Sito web http://www.ntfs.com/hard-disk-basics.htm
[DC]
Data Clinic Knowledgebase.
Sito web http://www.dataclinic.co.uk/data-recovery/hard-disk-functionality.htm
[WIKIP]
Wikipedia.
Sito web http://www.wikipedia.com
12
Scarica