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