Gentoo Logo

Disclaimer : La versione originale di questo articolo è stata pubblicata da IBM developerWorks ed è di proprietà di Westtech Information Services. Questo documento è una versione aggiornata dell'articolo originale, e contiene numerosi miglioramenti apportati dal Gentoo Linux Documentation team.
Questo documento non è mantenuto attivamente.


Guida alla stabilità hardware su Linux, Parte 1

Indice:

1.  Ricerca di errori nella CPU

Molti di noi nel mondo Linux hanno affrontato brutti problemi di hardware. Quanti di noi hanno settato una Linux box, installato le proprie applicazioni preferite, compilate ed installate applicazioni aggiuntive, e ottenuto che tutto funzioni perfettamente solo per scoprire che il nostro sistema ha un (argh!) fatale bug nell'hardware? Che i sintomi siano dei segmentation faults casuali, la corruzione dei dati, un blocco hardware, o la perdita dei dati è irrilevante -- il difetto hardware effettivamente trasforma il nostro affidabile sistema operativo Linux in qualcosa che a male pena è in grado di restare a galla. In questo articolo, noi daremo un sguardo in profondità su come scoprire una CPU o delle RAM difettose -- consentendovi di sostituire la parti difettose prima che possano fare gravi danni.

Se stai incontrando problemi di instabilità e sospetti che siano correlati all'hardware, ti invito a testare la CPU e la memoria per assicurarti che stiano lavorando bene. Tuttavia, anche se tu non hai incontrato questi problemi, è comunque una buona idea eseguire questi test di CPU e memoria. Nel farlo, potresti scoprire un problema hardware che avrebbe potuto importunarti nel momento sbagliato, o magari che avrebbe causato la perdita di dati o ore di frustrazione in una ricerca frenetica della causa del problema. La giusta, proattiva applicazione di queste tecniche possono aiutarti ad evitare molti mal di testa, e se il tuo sistema supera i test, puoi stare sicuro che il tuo sistema è all'altezza del compito assegnatogli.

Problemi di CPU

Se hai una CPU terribilmente difettosa, la tua macchina potrebbe non essere in grado di avviare Linux o potrebbe farlo solo per pochi minuti prima di bloccarsi. Le CPU in questo stato malandato sono facilmente diagnosticabili come difettose perché i sintomi sono chiari. Ma ci sono difetti più subdoli che non sono così facili da rilevare; di solito gli errori meno evidenti sono quelli che causano il blocco della macchina ogni volta senza una ragione apparente, o provocano la chiusura di certi processi in modo inaspettato. Molte instabilità connesse alla CPU possono essere provocate "esercitando" la CPU -- dandogli un mucchio di lavoro da fare, provocandogli un riscaldamento e in alcuni casi a "farle perdere i sensi". Diamo un'occhiata ad alcuni modi per stressare-testare la CPU.

Potreste essere sopreso di sentirti dire che uno dei migliori test sulla stabilità della CPU è dentro Linux -- la compilazione del kernel. Il compilatore gcc è un ottimo strumento per testare la stabilità generica di una CPU, e la costruzione di un kernel usa un bel po' gcc. Con la creazione e il test dei seguenti script dalla tua directory /usr/src/linux, potrai dare alla tua macchina un test di stress di compilazione del kernel di livello industriale:

Codice 1.1: The cpubuild script

#!/bin/bash
make dep
while [ "foo" = "foo" ]
do
make clean
make -j2 bzImage
if [ $? -ne 0 ]
then
echo OUCH OUCH OUCH OUCH
exit 1
fi
done

Ti accorgerai che questo script compila ripetutamente il kernel. Il motivo per questo è semplice -- alcune CPU hanno difetti intermittenti, che le permettono di compilare perfettamente il kernel il 95% delle volte, ma provocando errori di compilazione qualche volta. Potrebbero servire cinque o più compilazioni del kernel prima che il processore si scaldi al punto da diventare instabile.

Nello script precedente. accertati di sistemare l'opzione -j così che il numero che lo segua sia superiore di uno al numero di processori nel tuo sistema; in altre parole, usa "2" se hai un unico processore, "3" per un dual-processor, etc. L'opzione -j dice a make di costruire il kernel in parallelo, assicurando che ci sia sempre almeno un processo gcc in azione dopo che ogni file sorgente sia stato compilato -- assicurando così che lo stress nella tua CPU sia massimo. Se la tua Linux box non verrà usata nel pomeriggio, lasciagli eseguire questo script, e lascia che la macchina ricompili il kernel per un po' di ore.

Possibili problemi di CPU

Se lo script viene eseguito perfettamente per diverse ore, congratulazioni! La tua CPU ha superato il primo test. Tuttavia, è possibile che lo script muoia inaspettatamente. Come puoi sapere se hai un problema di CPU o un qualsiasi altro problema? Bene, se gcc tira fuori un errore del genere, allora ci sono buone possibilità che la tua CPU sia difettosa:

Codice 1.2: GCC error

gcc: Internal compiler error: program cc1 got fatal signal 11

A questo punto, lo stato della tua CPU potrebbe rientrare in una una di queste tre possibilità:

  • Se digiti make bzImage per riprendere la compilazione del kernel, e il compilatore muore nello stesso identico file, prova ancora a digitare make bzImage per diverse volte. Se dopo circa dieci tentativi il processo di costruzione continua a morire in questo file particolare, allora il problema è causato molto probabilmente da un (raro) bug del compilatore gcc che è stato provocato da questo particolare file sorgente, piuttosto che da una CPU difettosa. Tuttavia, di questi tempi, gcc è abbastanza stabile, così questo non sembra possa accadere.
  • Se digiti make bzImage per riprendere la compilazione del kernel e ottieni un altro signal 11 un po' più in là, allora la tua CPU ha le ore contate.
  • Se digiti make bzImage per riprendere la compilazione del kernel e il kernel si compila con successo, non significa che la tua CPU è OK. Di solito questo significa che il difetto della CPU compare ogni tanto, di solito quando la CPU raggiunge una certa temperatura (una CPU diventerà più calda quando è stata usata per un lungo periodo di tempo, e potrebbero servirgli diverse compilazioni del kernel per raggiungere il suddetto punto critico).

Salvare la tua CPU

Se la tua CPU ha errori casuali quando si trova sotto grosso carico, è possibile che non sia affatto difettosa -- forse, semplicemente, non è raffreddata in modo corretto. Ecco alcune cose che puoi controllare:

  • La ventola della tua CPU è collegata alla corrente?
  • E' relativamente priva di polvere?
  • La ventola gira realmente (e gira alla giusta velocità) quando il pc è acceso?
  • Il dissipatore è posizionato correttamente sulla CPU?
  • E' presente la pasta conduttiva tra la CPU e il dissipatore di calore?
  • Il tuo case ha una ventilazione adeguata?

Se tutto pare a posto, potresti voler far ripartire il test della compilazione del kernel con il case aperto. Lascia che il kernel si compili per circa cinque minuti e poi metti la tua mano dentro la macchina accesa e tocca il metallo esterno del case per scaricare una tua eventuale tensione di corrente. Poi, facendo molta attenzione, controlla la temperatura del dissipatore con la punta delle dita. Se è insolitamente calda, allora è molto probabile che la ventola/dissipatore non sia adeguata per la tua particolare CPU. In questo caso, aggiorna il sistema di raffreddamento -- sperando che la tua CPU non abbia subìto nessun danno permanente e sia ancora funzionante.

Il test definitivo della CPU

Il test della compilazione del kernel è un buon metodo per testare la stabilità della CPU, ma c'è un altro test estremo disponibile per la stabilità della CPU che tu potresti voler provare. L'ho lasciato per ultimo, perché se la tua CPU ha un sistema di raffreddamento del tutto inadeguato, questo particolare test potrebbe scaldarla molto e teoricamente causare danni permanenti alla tua CPU. Questo test è per i sistemi che hanno superato il test della compilazione del kernel senza problemi -- sistemi di cui vuoi assicurarti che possano gestire anche i carichi di CPU più problematici con facilità. Se la tua CPU è adeguamente raffreddata, allora supererà il test, in caso contrario, avrai bisogno di raffreddarla meglio.

Per eseguire il mio test "definitivo" per la CPU, la prima cosa che faccio è andare alla pagina lm_sensors (vedi Risorse) e scaricare il pacchetto lm_sensors. Questo tarball dei sorgenti contiene vari moduli del kernel che si interfacciano con il servizio di healt monitoring che si trova ormai in ogni scheda madre moderna. Una volta che il pacchetto è installato correttamete, e i moduli necessari caricati (usa lo script prog/detect/sensors-detect per capire quali sono), vedrai alcuni nuovi file apparire su /proc/sys/dev/sensors. Questi file contengono informazioni pratiche come la velocità delle ventole della CPU, la temperatura della CPU e della scheda madre, e il voltaggio della scheda madre, il tutto aggiornato in tempo reale. Ti consiglio di configurare questo pacchetto per essere compilato come modulo e di usare il sensors-detect script per capire quali moduli caricare all'avvio, poiché ho ottenuto migliori risultati con questa configurazione.

Quando avrai i moduli lm_sensors caricati, ti raccomando di installare un monitor grafico CPU/sensori, che ti permetterà di guardare il carico della tua CPU e le temperature in tempo reale senza dover ripetutamente fare cat dei file in /proc/sys/dev/sensors. A questo scopo, io uso un grande piccolo programma chiamato gkrellm (vedi Risorse. Qui c'è uno snapshot del mio gkrellm che sta monitorando l'uso della mia CPU, i settaggi della temperatura della scheda madre e un sacco di altre cose:


Figura 1.1: gkrellm is up and running

Fig. 1

Ci sono altri pacchetti disponibili per il monitoraggio grafico che sono compatibili con lm_sensors; ne potrai trovare un bel po' elencati sulla home page di lm_sensors, sotto la sezione "links".

L'ultimo step preparatorio è quello di scaricare il programma cpuburn (vedi Risorse). Questo piccolo programma manuale usa una combinazione di istruzioni macchina fatte a mano per dare il massimo stress alla tua particolare CPU -- perfino un po' di più di quello causato da una ripetitiva compilazione del kernel. Incluso in questo archivio ci sono diversi piccoli programmi configurati per i processori di classe P5 e P6, così come per le versioni speciali dell'AMD K6. Una volta scompattato il tarball di cpuburn, leggi il file README; ti spiega come compilare il file sorgente in assembly incluso. Dopo averlo fatto, avrai il tuo piccolo programma cpuburn.

Ora, per il test. Di solito faccio partire i monitor grafici dei sensori, e poi eseguo il programma cpuburn come root. Poi, guardo il lettore della temperatura della CPU alzarsi e stabilizzarsi, e poi lascio che cpuburn resti in esecuzione per un'ora circa. Se ripetendo questa procedura la tua CPU raggiungere sempre una temperatura inusuale (70 gradi Celsius dovrebbero essere considerati "insolitamente elevati"), allora il tuo sistema di raffreddamento della CPU necessita di più lavoro. E, se la tua macchina va in crash o si blocca, o se il processo di cpuburn muore, il raffreddamento della tua CPU deve essere migliorato -- o forse la tua particolare CPU semplicemente non è costruita sulle "specifiche". Puoi farti un giudizio usando i lettori di temperatura della CPU. Ma se tutto va bene, allora il tuo sistema dovrebbe essere in grado di affrontare ogni sfida che gli si dovesse presentare. Dopo un'ora circa, puoi proseguire e uccidere cpuburn per ripristinare le normali operazioni.

2.  Ricerca di errori nella memoria

Test della memoria

E' molto importante avere una CPU completamente affidabile, ed è altrettanto importante avere i chip della RAM solidi come la roccia. Alcune persone pensano che le SIMM e le DIMM non falliscano mai e non abbiano bisogno di test. Sfortunatamente questo non è vero -- la memoria cattiva è molto comune, e qualche volta è tutto quello che dobbiamo tenere d'occhio. Altre persone credono che sebbene ci potrebbe essere della RAM cattiva, ogni errore di memoria verrà rilevato dal memory check effettuato dal BIOS all'avvio del sistema. Anche questo è falso; il memory check del BIOS non rileverà la maggior parte della RAM cattiva, perciò non lasciare che il check del BIOS ti lasci con un falso senso di sicurezza.

Sintomi di memoria guasta

OK, così c'è della memoria guasta qui fuori, e qualcuna potrebbe essere nella tua macchina ora. Qui ci sono alcuni segnali di allarme che potrebbero indicare la presenza nel tuo computer di RAM guasta.

  • Quando carichi un po' di programmi insieme, qualche volta un certo programma morirà senza una ragione apparente.
  • Qualche volta, quando apri un file, esso appare corrotto. Se lo apri più tardi, esso apparirà buono.
  • Quando estrai le tarball (tar -xzvf), tar riporta spesso che la tarball è corrotta. Provi ad estrarre la tarball di nuovo un po' più tardi e tar non riporta nessun errore. Errori simili possono capitare con gzip e bzip.
  • Se tu stai avendo esperienza di problemi come questi, è probabile che la RAM del tuo sistema sia difettosa. Vorrai senza dubbio testare la tua RAM con il seguente metodo. E anche se non hai mai avuto questi problemi, è una buona idea dare alla RAM del tuo sistema un buon allenamento per assicurarsi di non rimanere mai sopresi da una bizzarria inaspettata della RAM in futuro. Ecco come fare.

memtest86

Per nostra fortuna, c'è un eccellente programma di testing basato su Linux che si installa su un floppy disk avviabile. E' chiamato memtest86 (vedi link="#resources">Risorse per averlo). Creare un floppy memtest è semplice. Primo, scarica il tarball. Secondo, scompatta l'archivio e costruisci l'immagine binaria del disco:

Codice 2.1: Building memtest86

# tar -xzvf memtest86-2.5.tar.gz
# cd memtest86-2.5
# make

Poi, inserisci un disco vuoto da 3,5" nel tuo lettore di floppy, e digita:

Codice 2.2: Installing memtest86

# make install

Dopo pochi secondi appena, il tuo dischetto da 3,5" avrà un meravigliso piccolo tester di memoria, pronto per essere avviato. Il modo migliore per eseguire questo test è quello di trovare un po' di tempo quando la tua macchina può rimanere ferma per almeno sei ore -- avviare il test appena prima di andare a letto (o di lasciare il lavoro) è una buona idea. Per iniziare il test, riavvia la tua macchina con il floppy nel lettore. Quando il tuo sistema si avvia, il programma memtest86 partirà immediatamente:


Figura 2.1: memtest86 controlla la RAM sulla mia macchina di sviluppo

Fig. 1

Bizzarrie della memoria più vistose (come i bit "morti") verranno rilevate in pochi secondi. I fallimenti innescati da spefici schemi di bit (che sfortunatamente sono abbastanza frequenti) potrebbero non essere rilevati per diverse ore, ma alla fine dovrebbero essere scovati anche questi. Non appena memtest86 scopre un bit difettoso, un messaggio apparirà sulla parte bassa dello schermo -- e il test continuerà. Quando accenderai il monitor la mattina seguente, troverai il test concluso, e se non troverai avvertimenti sullo schermo, allora con tutte le probabilità la tua RAM è buona. Tuttavia, se continui ad avere i problemi elencati nella sezione Sintomi di memoria guasta, allora è possibile che la tua RAM vada incontro a infrequenti bizzarrie e potrebbe lo stesso essere necessario sostituirla.

Risolvere i problemi di RAM

Spero che tutta la vostra RAM lavori bene. Tuttavia, se tu sei uno degli sfortunati, non è tutto perduto -- ci sono ancora alcune cose che puoi fare per "aggiustare" la tua RAM difettosa. La prima cosa che suggerisco di fare è di fare una visita al setup del BIOS e guardare i settaggi di memoria. Alcuni BIOS hanno una opzione per la memoria chiamata "Turbo Mode" -- ovviamente, se hai qualcosa del genere abilitato, dovrai disabilitarlo. E' anche possibile che i timing di memoria del BIOS sono impostati in modo scorretto -- puoi provare ad aggiustarli (aumentando il resfresh rate, abbassando il CAS) e rieseguire memtest86 per vedere se il problema è scomparso.

Se memtest continua a scovare errori, allora è tempo di scovare la SIMM o la DIMM danneggiata e rimuoverla dalla tua macchina. Se hai più di un modulo di memoria installato, allora installerai solo un singolo modulo (o due moduli se hai le SIMMS), e rieseguirai memtest86. Inserisci ciclicamente tutti i tuoi moduli e sarai in grado di determinare quali sono quelli difettosi -- non c'è motivo di gettare un modulo buono nel cestino.

Questo è tutto per ora; nella seconda e finale installazione in queste serie, vedremo come risolvere problemi relativi alla configurazione hardware, incluse problematiche di latenza IRQ e PCI. Nel frattempo, potresti controllare queste risorse.

Risorse

  • Scarica il pacchetto lm_sensors.
  • Prendi una copia di gkrellm.
  • Afferra il programma cpuburn.
  • Prendi la tua copia personale di memtest86.
  • Per maggiori informazioni sul "problema signal 11", controlla le Sig 11 FAQ.
  • Puoi trovare un bel po' di Window-maker dockapps (alcune sono CPU e sensors data grafici) al Linuxpowered.com's Window-maker links page.
  • Se stai cercando di diagnosticare un problema hardware correlato alla tua scheda grafica nVidia, assicurati di controllare le GeForce FAQ. Qui ci sono molte buone informazioni riguardanti Linux e Windows.
  • Per maggiori informazioni sulla ricerca di errori nVidia, controlla la Guida nVidia di Sven Vermeulen.

Note sull'autore

Daniel Robbins vive ad Albuquerque, Nuovo Messico. E' stato il presidente di Gentoo Technologies Inc., il Capo Architetto del Progetto Gentoo ed è uno degli autori di alcuni libri pubblicati da MacMillan: Caldera OpenLinux Unleashed, Suse Linux Unleashed, e Samba Unleashed. Daniel si è interessato ai computer un po' di maniera fin dalle superiori, quando fu per la prima volta messo di fronte al linguaggio di programmazione Logo e a una dose potenzialmente letale di Pac Man. Questo probabilmente spiega perché ha lavorato come Capo Artista Grafico alla SONY Electronic Publishing/Psygnosis. Daniel si diverte a passare il suo tempo con sua moglie Mary e la sua nuova bambina, Hadassah. Lo puoi contattare su Daniel Robbins.



Stampa

Aggiornato il 9 ottobre 2005

Oggetto: In questo articolo, Daniel Robbins spiega come diagnosticare e sistemare CPU difettose, così come testare la tua RAM per cercare difetti. Alla fine di questo articolo, sarai in grado di assicurarti che il tuo sistema Linux sia il più stabile possibile.

Daniel Robbins
Author

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.