Post 2012

14 Luglio 2012

Usare al meglio gli SSD

I Solid State Drive (SSD) sono delle memorie permanenti che pian piano stanno sostituendo gli Hard Disk Drive (HDD). Mentre gli HDD memorizzano i bit usando uno o più dischi magnetici scritti da una o più testine, gli SSD contengono delle memorie flash (proprio come le chiavette USB), quindi non c'è alcuna parte meccanica in movimento al loro interno.

I vantaggi degli SSD rispetto agli HDD sono innumerevoli. Non farò qui un elenco perché in rete potete trovare tutte le comparazioni possibili e immaginabili. Un'ottima tabella comparativa si può trovare alla pagina SSD di Wikipedia inglese.

L'unico svantaggio degli SSD è sostanzialmente il costo e la durata. È noto infatti che le memorie flash non possono essere riscritte all'infinito, anzi, si possono riscrivere molte meno volte rispetto a un settore di un disco magnetico. Ovviamente questo non significa che l'SSD vi ri romperà dopo due giorni... Un SSD, se usato al meglio, può durare anche 20 anni, senza problemi. In ogni caso la tecnologia corre veloce e probabilmente fra qualche anno questo limite non sarà più un problema.

Ora vedremo alcune accortezze da seguire per gestire il proprio SSD e per allungare la sua vita.

Il TRIM

Le memorie di massa sono organizzate in unità fondamentali. Nel caso degli HD, l'"unità di memoria" è chiamata settore mentre per gli SSD è chiamata pagina. Entrambe sono tipicamente di 4 kiB. Nel caso degli SSD, le pagine sono organizzate in blocchi la cui dimensione prende il nome di Erase Block Size (EBS). Solitamente l'EBS è di 512 kiB, quindi questo significa che in un EBS ci sono 128 pagine. Ora vedremo perché l'EBS ha questo nome.

Sia gli HDD che gli SDD possono leggere e scrivere un singolo settore/pagina (vuoto nel caso della scrittura). La differenza compare nella riscrittura. L'operazione di riscrittura di un settore in un HDD è sostanzialmente identica alla semplice scrittura. Negli SSD invece una pagina piena non può essere scritta nuovamente, deve prima essere "svuotata". Ma il problema non è solo questo! Per motivi tecnici un SSD non può cancellare una singola pagina ma deve per forza cancellare un intero Erase Block Size (EBS) per volta! Quindi se si tenta di scrivere dei dati nelle pagine già scritte ma marcate come cancellabili (ricordatevi che quando si cancella un file viene eliminato solo un riferimento nel file system ma i dati rimangono lì), l'SSD dovrà prima copiare il contenuto delle pagine piene di tutto l'EBS nella cache, dovrà cancellare l'intero EBS a cui appartengono e poi riscriverà i vecchi dati e i nuovi (fenomeno chiamato write amplification). Chiaramente questo comporta una perdita di velocità nel tempo e un'usura precoce della memoria.

Per ovviare a questo problema esiste il TRIM. Una funzionalità inutile per gli HDD ma fondamentale per gli SSD. Quando si cancella un file si elimina solo un riferimento nel filesystem, ma fisicamente il dato continua a rimanere lì dov'è. Pertanto l'SSD non può sapere se una determinata pagina è piena ma cancellabile oppure no. Deve aspettare che il sistema operativo glielo ordini. Ora invece, se l'SSD supporta il TRIM (e oramai tutti lo supportano) e lo supporta anche il sistema operativo (Windows 7 e le ultime di Linux lo supportano), il sistema operativo può comunicare all'SSD quali pagine corrispondono ai file cancellati. In questo modo l'SSD marca quelle pagine come cancellabili e può così applicare, nei momenti di riposo, in background, la cosiddetta Garbage Collection, cioè spostare le pagine piene di un EBS in un altro EBS vuoto e cancellare completamente il precedente EBS. In questo modo, cioè eliminando continuamente tutte le pagine cancellabili, si minimizza la probabilità che quando si scrive un file, si debbano sovrascrivere delle pagine.

In Windows 7 per vedere se il TRIM è abilitato dare il seguente comando dal Prompt dei Comandi

fsutil behavior query DisableDeleteNotify

Se il risultato è "0" il TRIM è abilitato. Se è "1" è disabilitato e potete provare ad abilitarlo dando il comando

fsutil behavior set disablenotify 0

AHCI

AHCI è uno standard di funzionamento delle interfacce SATA. Se entrate nel BIOS del vostro PC e cercate la voce "SATA operation mode" potete vedere che ci sono diversi modi di funzionamento. IDE, AHCI, RAID, ecc... Lo standard RAID comprende anche l'AHCI. Tra le caratteristiche avanzate fornite dall'AHCI c'è principalmente l'hot-plugging (quasi inutile per un disco interno per un uso normale) e il Native Command Queuing (NCQ). Il TRIM invece funziona anche senza AHCI.

Native Command Queuing (NCQ) è una caratterista avanzata che ottimizza la scrittura/lettura dei dati nelle memorie di massa. Nel caso degli HDD viene per esempio ottimizzato il percorso della testina. È utile anche negli SSD perché permette la scrittura parallela e fornisce la possibilità di accumulare comandi di scrittura/lettura mentre la CPU è intenta a fare altro. Purtroppo non si può capire se è abilitato o meno. Si può solo controllare se il proprio SSD supporta NCQ (con Hwinfo32 per esempio) e se l'AHCI è abilitato in Windows guardando l'apposita chiave di registro. Attenzione! Se Windows 7 viene installato con l'AHCI disabilitato nel BIOS, e successivamente viene abilitato cambiando l'opportuna voce del registro, Windows 7 non partirà. Vedi questo link.

Se il vostro PC è vecchio e non supporta l'AHCI non preoccupatevi. Perderete qualcosa nelle prestazioni ma non farete alcun danno. Il TRIM invece, lo ripeto, è fondamentale.

Le partizioni

Partizionare l'hard disk può influenzare il corretto funzionamento del TRIM o della Garbage collection? Probabilmente no perché queste funzionalità non vedono il filesystem. Quindi credo che partizionare non faccia alcun danno.

Quello a cui si deve stare attenti è invece l'allineamento delle partizioni. Il problema dell'allineamento delle partizioni si presenta da tempo anche in altri tipi di situazioni, per esempio nei file system "spalmati" su più dispositivi fisici (vedi questo link). Vediamo di presentare il problema. Immaginate la memoria dell'SSD divisa in tanti blocchi, gli EBS da 512 kiB. Per motivi storici, la memoria di massa viene sempre immaginata come un vecchio hard disk, cioè divisa in settori da 512 B. Quindi dovete immaginare che ci sia un'ulteriore divisione, che consiste in 1024 settori per ogni EBS. Fin qui nessun problema.

Ora consideriamo il partizionamento, cioè l'applicazione di un certo filesystem in una certa regione della memoria, detta appunto partizione. Immaginiamo per semplicità di creare un'unica partizione NTFS che copra tutto il disco. Windows, come ogni sistema operativo moderno, non ragiona in termini di settori o pagine. Ragiona in termini di cluster. Un cluster è la più piccola unità del filesystem ed è tipicamente di 4 kiB. Contrariamente ai settori, alle pagine, agli EBS, ecc... che si riferiscono al disco e quindi sono fissi, i cluster del filesystem cominciano dove comincia la partizione. E qua già si comincia a intuire il problema dell'allineamento. Voi direte: "Dov'è il problema? Tanto la partizione comincia sempre dal primo settore/pagina della memoria e quindi i cluster del filesystem andranno a coincidere sempre con le pagine dell'SSD!". Il problema in realtà c'è perché ci si è dimenticati di una cosa fondamentale.

Una partizione non può mai cominciare nel primo settore/pagina della memoria di massa! Bisogna lasciare almeno 63 settori (questo numero ha origini storiche, vedi https://ata.wiki.kernel.org/index.php/ATA_4_KiB_sector_issues) cioè 32256 B (31.5 kiB, 7.875 pagine). Di questi 63 settori, il primo serve a memorizzare l'MBR. Se la partizione cominciasse subito dopo, cioè al settore 64, i cluster del filesystem sarebbero tutti sfasati rispetto alle pagine dell'SSD e quindi anche rispetto agli EBS. Cioè in pratica, ogni volta che il sistema operativo scriverà/leggerà un cluster del filesystem, si dovranno scrivere/leggere sempre due pagine dell'SSD. Analogamente, ogni volta che si riscriverà un cluster a cavallo tra due EBS, l'SSD dovrà cancellare entrambi gli EBS interessati, con ovvie conseguenze sulla vita dell'SSD e sulle prestazioni. Questo è il problema dell'allineamento delle partizioni.

La soluzione è quindi quella di far cominciare la partizione in un posto adatto, in modo tale da far entrare un numero intero di cluster all'interno di un EBS (tipicamente il cluster è da 4 kiB e l'EBS è 512 kiB quindi ci si aspetta di avere, come già detto, 128 cluster per EBS, cioè far coincidere i cluster del filesystem con le pagine dell'SSD). Per far questo basterebbe far cominciare la partizione anziché dopo il settore 63, dopo il settore 64, cioè lasciando liberi 32 kiB. Questo renderebbe tutto allineato anche se si avesse un cluster di dimensioni maggiori, cioè 8 kiB, 16 kiB e 32 kiB. Non andrebbe bene però se si avesse un cluster da 64 kiB (provate a fare dei calcoli e lo vedete subito).

Quello che si fa in pratica però è lasciare uno spazio maggiore, 1 MiB o 2 MiB di spazio vuoto. Questo fa sì che la partizione cominci sulla prima pagina di un EBS, infatti le dimensioni degli EBS seguono le potenze di 2 e arrivano, al massimo, a 2 MiB. Normalmente, lo ripetiamo, l'EBS è da 512 kiB. Inoltre lasciando 1 MiB o 2 MiB si fa in modo di contemplare anche filesystem con cluster di dimensioni maggiori che potranno comparire in futuro (NTFS al massimo può arrivare a cluster di dimensione 64 kiB). Infine in questo modo si lascia in pace il primo EBS dove c'è l'MBR e oltretutto si ha abbastanza spazio a disposizione per memorizzare il secondo stage del boot loader.

Far cominciare la partizione a 1 MiB o 2 MiB è molto semplice. Se installate Windows 7 su un SSD vergine, pensa a tutto lui. Se invece volete usare degli strumenti gratuiti potete usare il solito Gparted (incluso in System Rescue CD). Gparted gestisce tre tipi di arrotondamento per le partizioni: nessun arrotondamento, arrotonda al cilindro (buono per gli HDD), e arrotonda al MiB (buono per gli SSD). Per verificare che tutto vada bene, in Windows andate su msinfo32 (cioè il programma informazioni di sistema) poi sotto la voce dischi, vedrete il vostro SSD e le sue partizioni. Controllate l'offset di avvio di tutte le partizioni. Questo numero deve essere sempre divisibile per 4096 (cioè la dimensione in byte del cluster del vostro filesystem. Se usate un cluster di dimensioni maggiori ovviamente dovete usare quel numero).

Altri accorgimenti per limitare le scritture su disco

Ovviamente bisogna evitare che l'SSD venga scritto in continuazione. Ecco alcuni suggerimenti in ordine di importanza.

Strumenti per testare gli HDD o gli SSD sono AS SSD, ATTO, IOMETER. AS SSD dice anche se AHCI è abilitato (guardando il driver usato) e se le partizioni sono correttamente allineate.

13 Marzo 2012

Pubblicazione della propria tesi

In ambito scientifico, si sa, più pubblicazioni si hanno e meglio è. Per questo motivo in molti paesi si tende oramai molto spesso a scrivere le tesi di dottorato come delle collezioni di pubblicazioni. In pratica lo studente si concentra sulla produzione di articoli scientifici anziché sulla produzione di una monografia. In questo modo avrà più tempo da dedicare al lavoro scientifico e molte più pubblicazioni, dedicando alla tesi solo il tempo necessario per scrivere una parte iniziale esaustiva per introdurre l'argomento (cosa non possibile all'interno degli articoli scientifici). Questo tipo di tesi non viene solitamente pubblicato in collane prestigiose o a volte non viene pubblicato affatto, perché contiene sostanzialmente tutto materiale già pubblicato altrove.

In Italia si continua invece sulla tradizione della monografia, come è infatti la mia tesi di dottorato. Per avere una pubblicazione in più ho deciso quindi di pubblicarla dotandola di un codice ISBN. Alcune case editrici hanno delle collane apposite dedicate alle tesi monografiche (per esempio la collana Springer Theses). Ma farsi accettare la pubblicazione in queste collane non è semplice e può essere fatto solamente entro un certo periodo di tempo dalla fine del corso di studi. Alcune università hanno invece delle convenzioni specifiche con delle case editrici, spesso facenti parte dell'università stessa, con cui le tesi di dottorato sono automaticamente pubblicate. Non avendo più la possibilità di pubblicare la mia tesi in collane apposite e dato che la Sapienza, la mia università, non ha alcuna convenzione con delle case editrici, ho deciso dedicarmi in prima persona alla pubblicazione.

Qualche mese dopo la fine del mio dottorato, ero stato contattato da una casa editrice tedesca per pubblicare la mia tesi con loro (Lambert). Ma studiando su internet ho capito che questo tipo di case editrici non sono in pratica delle vere case editrici. Non curano effettivamente il lavoro e non lo controllano a fondo. Sono un esempio di vanity press e author mill. Data la connotazione negativa che poteva derivare dal pubblicare un lavoro con questo tipo di "case editrici", ho deciso di usare un servizio di print on demand, in particolare Lulu.com, che mi sembra il migliore e il più economico. Ha inoltre un'ottima reputazione, perché creato dal fondatore dell'azienda Red Hat, Bob Young, e perché non cerca di sembrare ciò che non è. Lulu è infatti in sostanza uno stampatore, non una casa editrice. Per pubblicare la vostra tesi con Lulu non dovete far altro che registrarvi su Lulu.com, e seguire le istruzioni.

A seconda del tipo di rilegatura scelta, potete usare certi formati di carta. Nel mio caso, avendo la tesi già pronta in formato A4, ho dovuto scegliere la rilegatura termica. La copertina rigida non prevede purtroppo l'uso di carta in formato A4. Per quanto riguarda la formattazione delle pagine interne, avete la più completa libertà. Ci sono dei template di Microsoft Word forniti su Lulu.com ma non siete obbligati a seguirli, anzi! Ovviamente non c'è bisogno che ve lo dica, ma non c'è bisogno neanche di usare per forza Word. Per esempio, la mia tesi è scritta in LaTeX. Considerate infatti che il formato preferito per inviare la vostra tesi è il pdf. L'unica cosa da rispettare è controllare quanto margine viene mangiato dalla rilegatura da voi scelta. Per farlo basta guardare le dimensioni di pagina dei modelli Word (solitamente 5 o 6 mm). È bene che decidiate, prima di cominciare, che tipo di licenza usare per la vostra tesi.

La copertina del libro, nel caso vogliate realizzarla voi stessi, deve essere creata come un'unica immagine che comprende la prima di copertina, la costina e la quarta di copertina. Questo richiede una previsione dello spessore del libro e altri piccoli accorgimenti. Nel mio caso, per sbrigarmi, mi sono accontentato di scegliere una copertina "preconfezionata". I modelli di copertina offerti da Lulu.com sono comunque belli e inoltre sono completamente personalizzabili. Potete inserire anche una o più immagini, come la vostra foto con una piccola biografia e un'immagine grande per la copertina. Quando preparate la copertina tenete a portata di mano un piccolissimo riassunto del libro che va riportato nella quarta di copertina.

Lulu.com vi offre anche la possibilità di avere un codice ISBN. In questo caso però siete obbligati ad acquistare (a prezzo di stampa e non di vendita) almeno una copia del vostro lavoro. Questo codice dovrete metterlo nella "zona copyright" della vostra tesi (di solito la pagina 2) e anche nella quarta di copertina insieme al codice a barre (se usate le copertine "preconfezionate" di Lulu non dovete fare nulla perché viene viene messo in automatico). Per avere un ISBN dovete inoltre accettare di mettere in vendita il vostro libro in vari circuiti, tra cui Amazon. Per dare l'ok definitivo a vendere il vostro libro in questi circuiti, dovete aspettare che vi arrivi a casa la copia della tesi e la controlliate.

Ed ecco la pagina della mia tesi su Lulu.com: Defects and doping in Cu2O.

18 Gennaio 2012

Corso di informatica e altre novità

Ho da poco cominciato a fare il supplente di informatica per un istituto professionale di Roma. Da questa esperienza ho creato due nuove sezioni del sito. Una su come si fa a diventare professore di scuola secondaria e una con le dispense che sto preparando per il corso di informatica.