[Postscript] [About] [Copertina] [Tar] |
Articoli
La nascita negli ultimi due anni dei nuovi standard E(nhanced)-IDE e Fast-ATA accompagnata dall'introduzione di nuovi Harddisk e Controller ha comportato un'ondata di instabilita' tra gli utenti spinti dalla perenne "fame" di potenza per il proprio PC. Nell'indecisione di quali aggiunte o modifiche fare su come aggiornare il proprio sistema spesso si assiste a vere competizioni di benchmark su chi riesce a spremere qualche kbyte in piu' dal proprio HardDisk.
Non vuole essere prerogativa di questo articolo lo studio di possibili soluzioni hardware su come ottenere le "massime" prestazioni con le varie combinazioni di hardisk e/o controller disponibili sul nostro mercato ma semmai come muoversi nel "mondo Linux" per sfruttare al meglio il proprio hardware, inteso come accoppiata disco controller. Mi riferisco ad una utility che forse non molti conoscono l'hdparm la quale permette di settare e/o attivare via software le speciali caratteristiche presentate dai nuovi standard quali EIDE o Fast-ATA (ATA2, ATA3, Ultra-ATA) sui nostri nuovi hardisk.
Generalmente in altri ambienti operativi come Dos, Windows, 95, NT e OS/2 vengono gia' fornite delle utilita' accompagnate al prodotto, hardisk o controller che sia, che si occupano di sostituire i driver del nostro sistema operativo con nuovi o piu' aggiornati e settare al meglio le modalita' di trasferimento dati.
Sotto Linux non mi e' mai capitato di trovare qualche "magico" dischetto autoformattante :^) o modificatore di MBR, mi riferisco ad esempio ad una utility molto diffusa come l' ONTRACK Manager che si ritrova spesso su hardisk quali Quantum , Seagate o Western Digital . Ma Linux non sta a guardare infatti riporta queste sue potenzialita' nel Kernel. Una opportuna ricompilazione di quest'ultimo rende possibile includere e supportare tutte le nuove specifiche dei vari standard ATA, Fast-ATA, ATAPI (CDROM) del nostro nuovo HD. Pero' queste inclusioni si rivelano essere piu' potenzialita', infatti al momento del boot non vengono attivate per questioni di sicurezza , si pensi ad un vecchio hardisk che povera fine farebbe. Dischi piu' recenti sanno riconoscere i propri limiti e non permettono modi di trasferimento non supportati.Prima di passare in dettaglio all'uso dell'hdparm e' doveroso spendere qualche parole sulle reali prestazioni che si possono ottenere dall'utility. Una buona domanda che si pongono in tanti e' il mio drive e' veloce come dovrebbe esserlo? Per capire meglio prendo in riferimento la tabella tab.1
tipo bus ampiezza bus trasfer rate massimo N.unita' capacita' massima |
IDE | EIDE/FAST-ATA | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ISA Bus | Local Bus | Local Bus | ||||||||||||||||||||||
16 Bit | 16 Bit | |||||||||||||||||||||||
3Mb/sec | 5Mb/sec | 10,13 o 16Mb/sec * | ||||||||||||||||||||||
2 | 4 | |||||||||||||||||||||||
528 MByte | 8,4 GByte | |||||||||||||||||||||||
* transfer rate massimo |
10 MByte/sec. con Pio Mode 3
13 MByte/sec. con DMA Mode 1 16 MByte/sec. con DMA Mode 4,Pio Mode 4 |
tab.1
I valori che sicuramente interessano maggiormente sono i valori di transfer rate massimo. Quindi con EIDE si parla di miglioramento di trasferimento di grandi file e accesso ai dati sequenziale. Il tempo d'accesso e' principale caratteristica dell'HD stesso. Esistono varie modalita' di trasferimento chiamate PIO Mode o DMA Mode e queste devono per inteso essere supportate sia dal disco che dal controller per essere attivate. La prima cosa da puntualizzare e' che i dati sono dati teorici e che non rappresentano la velocita' con cui attualmente il disco riesce a leggere o scrivere sul supporto magnetico, ma la velocita' con cui i dati vengono scambiati dalla CPU alla cache buffer del disco ed e' inteso che il dato fornito e' nel caso piu' ottimistico in cui il dato sia gia' pronto in cache. In realta' c'e' tutta una serie di operazioni prima che il dato venga "caricato" in cache (ricerca del dato su disco, etc.. tutto poi all'attenzione del controller che a volte rappresenta la causa limitante delle reali prestazioni del disco). Detto questo e in base al benchmark utilizzato (l'hdparm si presta anche a questa funzione), aspettatevi un transfer rate variabile da 1Mb a 9Mb. "Il vero test e' come i nuovi standard migliorino le nostre applicazioni giorno per giorno" e l'hdparm puo' aiutarci in questo.
Hdparm v3.1. - Uso e Configurazione
L'utilizzo dell'hdparm risulta abbastanza semplice, e' un programma che puo' essere lanciato da una linea di comando oppure come consigliato, avviato al momento del boot da uno degli script in rc.d , solitamente lo si inserisce in rc.local. Prima di arrivare a questo pero' occorre essere sicuri delle funzioni che si vogliono attivare sul nostro disco. Cosa fondamentale e che si dara' scontata da qui in poi e' che sia il controller che il disco devono supportare lo standard EIDE o FAST-ATA altrimenti non otterrete i risultati sperati per non dire eventuali rischi di danneggiamento del filesystem o disco stesso. Se ho un disco EIDE e un vecchio controller su bus ISA non ci sara' verso di ottenere alcun tipo di beneficio. Questo vale anche al viceversa , se ho un disco IDE e una nuova scheda madre con un controller o Chipset che supporta tutte le nuove specifiche EIDE sara' vano ogni tentativo di ottenere modalita' di trasferimento in PIO mode 3 o 4, il disco non riconoscerebbe il tipo di controllo.
Esistono varie versioni dell'hdparm, la piu' recente e' la 3.1 che pero' per essere sfruttata a pieno vuole una versione di kernel 2.0.10 o superiore in questo modo si potranno sfruttare tutte le nuove inclusioni dei driver EIDE e dei piu' recenti o usati chipset di controller vedi Triton, CMD640,... Esiste un legame molto stretto tra sviluppo del kernel e dell'utility, specie ultimamente con l'introduzione del supporto di numerosi chipset di controller. Versioni di kernel fino alla 2.0.10 supportano la versione 2.7 dell'hdparm che possiamo considerare come il requisito minimo; mentre l'utility vuole almeno un kernel 1.1.57 , 1.2.13 se volete le nuove specifiche dei nuovi driver EIDE. Le versioni di kernel successive hanno per lo piu' seguito l'evolversi dello standard e dei chipset di controller sul mercato per cio' che riguarda l'interfaccia IDE.
La prima operazione da seguire e' ricompilare il kernel. Prima di questo , per gli utenti piu' esperti, e' possibile eseguire delle modifiche sui file di inclusione di compilazione del kernel:
/usr/src/linux/drivers/block/hd.c
/usr/src/linux/drivers/block/ide.h
/usr/src/linux/drivers/block/ide_modes.h
#define DEFAULT_MULT_COUNT 0 /* set to 0 to disable multiple mode at boot */
/******************************************************************************
* IDE driver configuration options (play with these as desired):
*
* REALLY_SLOW_IO can be defined in ide.c and ide-cd.c, if necessary
*/
#undef REALLY_FAST_IO /* define if ide ports are perfect */
#define INITIAL_MULT_COUNT 0 /* off=0; on=2,4,8,16,32, etc.. */
#ifndef SUPPORT_VLB_SYNC /* 1 to support weird 32-bit chips */
#define SUPPORT_VLB_SYNC 1 /* 0 to reduce kernel size */
#endif
#ifndef DISK_RECOVERY_TIME /* off=0; on=access_delay_time */
#define DISK_RECOVERY_TIME 0 /* for hardware that needs it */
#endif
#ifndef OK_TO_RESET_CONTROLLER /* 1 needed for good error recovery */
#define OK_TO_RESET_CONTROLLER 1 /* 0 for use with AH2372A/B interface */
...
ide_modes.h
:
{ "WDC AC2540", 3 },
{ "WDC AC2420", 3 },
{ "WDC AC2340", 3 },
...
{ "QUANTUM FIREBALL", 3 },
...
{ "***MIO HARDISK***" , X },
...
Se il tutto vi pare poco familiare non toccate nulle e ricompilate normalmente il kernel. Se conoscete il vostro chipset del controller includetelo nella compilazione se non ne siete sicuri potete provare una volta con tutti , alcuni chipset vengono riconosciuti all'atto del boot dal kernel stesso. Una volta installato il nostro nuovo kernel si esegue il boot e qui e' consigliabile passare alcuni parametri al boot loader LILO o simile che sia. Una funzione utile e' ideX=autotune oppure hdX=autotune . Questo richiede al kernel di provare il nostro hardware per ottenere la miglior modalita' di trasferimento supportata. In realta' esistono molte altre opzioni che possono essere ritrovate nel file di Documentazione allegato ai sorgenti del kernel:
/usr/src/linux/Documentation/ide.txt
alcune funzioni tipo forzamento della frequenza del bus o altre legate al nostro chipset possono risultare pericolose. Se il boot ha avuto successo possiamo loggarci come root e settare il nostro hardisk. Provate prima un hdparm -t /dev/hdX 2 o 3 volte. Questo ci restituira' un valore di benchmark di riferimento per il nostro hardisk.Timing buffered disk reads: 16 MB in 9.47 seconds = 1.69 MB/sec
/dev/hdb:Timing buffered disk reads: 16 MB in 4.96 seconds = 3.23 MB/sec
Di certo l'hdparm e' ricco di
switches
ed e' possibile consultare il
manuale per una piu' dettagliata descrizione. Personalmente vorrei
soffermarmi in particolare su quelli che reputo i piu' interessanti.
La prima cosa da controllare sono le specifiche del nostro disco:
hdparm -i /dev/hdX
hdparm -c1 /dev/hdX
abilita il trasferimento a 32bit, in particolare :
-c0 disabilita la funzione.
-c1 abilita la modalita' a 32bit.
-c2 abilita la modalita' a 16bit.
-c3 abilita la modalita' a 32bit con una funzione di sincronismo richiesta da
molti tipi di chipset.
hdparm -m16 /dev/hdX
Le seguenti funzionalita' vengono dichiarate come le piu' pericolose, specie se in possesso di chipset di controller quale il CMD-640 e RZ1000 ; anche se nelle versioni piu' recenti di kernel i bug relativi a questi chip sono stati risolti (CMD-640) e' sempre bene prima fare riferimento alla documentazione allegata ai sorgenti del kernel.L'opzione -u1 viene chiamata interrupt-unmasking. In pratica Linux risulta piu' pronto nell'utilizzo degli interrupt e quindi migliora la gestione del disco.
L'opzione -X e' quella che si occupa di settare sul disco le modalita'
di trasferimento per i nuovi dischi con specifiche (E)IDE-ATA2.
-X00 attiva il PIO Mode di default dell'hardisk
-X01 attiva il PIO Mode di default disabilitando il segnale di IO/READY
-X10 e' usato per attivare il controllo PIO MODE 2
-X11 e' usato per attivare il controllo PIO MODE 3
-X12 e' usato per attivare il controllo PIO MODE 4
...
-X34 e' usato per attivare la modalita' DMA2
Testati alcuni modi di trasferimento si puo' verificare con la funzione di benchmark offerta dall' hdparm quale settaggio effettivamente consente le migliori prestazioni al nostro disco. Una volta verificato cio' si puo' aggiungere nel nostro /etc/rc.d/rc.local la linea di comando :
------------------------------------------------------------------
sync
echo -n "Hdparm setting..."
/usr/sbin/hdparm -c1 -X12 -a16 -m16 -W1 /dev/hda
echo "done."
------------------------------------------------------------------
Che attiva la modalita' a 32bit , PIO Mode 4 sul primo disco.
-- Massimiliano Baki ( vanilla@dei.unipd.it )
[Postscript] [About] [Copertina] [Tar] |