[HOW-TO] Slackware Tuning: Velocizzare il boot

Forum dedicato agli studenti del corso linux e a tutti gli amanti del pinguino!

Moderatore: matteo

[HOW-TO] Slackware Tuning: Velocizzare il boot

Messaggioda matteo » lun apr 03, 2006 12:13 pm

Tutte le migliorie che sono state introdotte in Slackware negli ultimi anni, hanno portato ad un sensibile rallentamento nell'avvio della macchina.
Ci sono dei trucchi, sconosciuti ai più, che consentono di ridurre sensibilmente i tempi di avvio. La tecnica consiste nello sfruttare il parallelismo. Presa con la dovuta cautela questo sistema funziona abbastanza bene, purchè non se ne abusi.
Dalla mia esperienza noto che i tempi più lunghi sono dati da: hotplug, ldconfig, depmod, sendmail, dhcpcd, fsck.

- HOTPLUG: questo demone va a controllare l'hardware e carica i moduli necessari al loro funzionamento

nelle vecchie versioni di Slackware (se non erro dalla 9.0 e inferiori), questo tool non esisteva, e tutti i moduli che si dovevano caricare per far funzionare l'hardware presente andavano inseriti in /etc/rc.d/rc.modules; tale script è ancora presente ma supplisce alle funzioni base di inizializzazione dei moduli.
Il vantaggio dell'hotplug è quello di non doversi impazzire per 'indovinare' quali siano tutti i moduli da caricare; tale comodità, però, si paga con i tempi di caricamento, visto che per ogni componente hardware deve andare a fare la scansione dei moduli per vedere se ce né uno adatto.
Il pensiero più intuitivo è che l'hardware che ha trovato, non lo utilizzeremo immediatamente, ma solo dopo aver fatto il login (tranne qualche eccezione). Possiamo allora pensare che mentre l'hotplug lavora, il resto del boot continui ad andare avanti.
Questo si fa semplicemente editando il file /etc/rc.d/rc.M; cerchiamo la riga ". /etc/rc.d/rc.hotplug start" ed aggiungiamoci un "&" alla fine.
L'unica accortezza è che se avete la scheda di rete non build-in (considerate che il kernel 2.6 ha veramente poca roba build-in), è opportuno caricarla alla vecchia maniera, editando cioè il file /etc/rc.d/rc.modules e decommentare (o aggiungere) la riga relativa alla propria scheda (che potete vedere da un lsmod).

- LDCONFIG: questo programma va ad aggiornare i link delle librerie di sistema, solitamente quelle in /lib e simili

questa è una operazione che va fatta ogni volta si installa un pacchetto che aggiunge nuove librerie; solitamente tale operazione viene effettuata automaticamente dall'installer... perchè rifarla ad ogni reboot? soprattutto se tra un boot e l'altro non sono state fatte nuove installazioni?
Ed ecco che anche in questo caso si può operare come l'hotplug, editando /etc/rc.d/rc.M, ed aggiungendo un "&" alla riga "/sbin/ldconfig"

- DEPMOD: questo programma aggiorna le dipendenze dei moduli del kernel

similmente alle librerie, questa è una operazione va fatta ogni volta che si installa o si rimuove un driver; ed anche qui solitamente l'operazione viene effettuata dall'installer. La velocità di tale operazione dipende dalla velocità dei dischi, quindi negli ultimi tempi è molto facile che i tempi siano molto trascurabili. In pratica lo script va a spulciare tutti i moduli presenti nella /lib/module/<vers.kernel> e controlla se ce ne sono di nuovi rispetto all'ultimo controllo; nel kernel 2.6 i moduli sono quasi 2000. La tecnica per velocizzare in questo caso non è quello di parallelizzare, in quanto non è possibile, ma di eliminare questo controllo; quindi se si ritiene che i tempi siano sufficientemente brevi non effettuate questa operazione, altrimenti fate questo:
editare /etc/rc.d/rc.modules
all'inizio troverete un blocco if...fi; all'inizio di ogni riga aggiungete un "#" per commentare tale riga.

- SENDMAIL: questo è il famoso demone per l'invio della posta

in verità la soluzione più veloce per velocizzare il processo di boot è non caricare questo demone :-), che non sempre è necessario, con "chmod -x /etc/rc.d/rc.sendmail". Tuttavia, personalmente, preferisco startarlo (può sempre far comodo). In teoria l'avvio di questo programma dovrebbe essere rapidissimo; tuttavia a seconda della configurazione della rete, è possibile che l'avvio arrivi anche ad 1 minuto. Come per l'hotplug e per l'ldconfig, si può editare /etc/rc.d/rc.M e mettere un "&" dopo ". /etc/rc.d/rc.sendmail start"

- DHCPCD: questo è il daemon che configura l'interfaccia di rete tramite un server dhcp

il consiglio è quello di non configurare, in fase di installazione o da /etc/rc.d/rc.inet1.conf, la rete usando il dhcp come default. Se possedete nella vostra rete un server dhcp (rete aziendale o router adsl), in teoria non ci dovrebbero essere problemi, però se per caso il server dhcp è giù (router adsl spento) o non vi funziona il cavo di rete, o siete con il portatile a casa di un amico che non ha un server dhcp o non ha proprio il computer ecc..., avrete l'inconveniente che avete atteso 60 secondi per ritrovarvi poi con una scheda di rete con nessun indirizzo settato (che non è buono, anche se non si ha un cavo di rete), senza un default router e senza dns. Configurate quindi un indirizzo ip statico che vi va bene nella maggior parte dei casi in cui siete senza server dhcp; potrete in qualsiasi momento lanciare da shell il comando "dhcpcd eth0". Ma se proprio volete il dhcp, per comodità o per bisogno, allora facciamo questi passi:
1- cerchiamo di capire quanto tempo ci mette il tuo server dhcp a darti un ip; se la rete è ben fatta, i tempi possono arrivare anche ad un solo secondo, ma se la rete ha parecchia latenza, si arriva anche a 30 secondi. Lanciate quindi il comando "dhcpcd eth0" e contate dopo quanto tempo vi restituisce il prompt.
2- editiamo il file /etc/rc.d/rc.inet1 e cerchiamo la riga "echo "/etc/rc.d/rc.inet1: /sbin/dhcpcd -d -t 60 ${DHCP_OPTIONS} ${1}" | $LOGGER"
3- modifichiamo il 60 con un valore superiore, ma non troppo, a quello che avete calcolato prima (io solitamente metto 10 o al massimo 15 secondi, ma dipende dalla vostra rete).
Quello che abbiamo fatto è diminuire il timeout per la ricerca del dhcp. In pratica, se so che di solito il dhcp mi fornisce un ip in non più di 5 secondi, chi me lo fa fare ad aspettare ad aspettare 60 secondi se so che non c'è un server dhcp? così anche se siete in giro con un portatile, il tempo di boot è velocizzato di ben 50 secondi.

- FSCK: cioè la scansione del disco al boot.

questa è una delle operazioni che, quando il sistema ritiene che venga fatta, è quella più noiosa. Questa operazione è solitamente effettuata dopo ogni crash della macchina, se si usa un ext2; in questo caso la primissima cosa da fare è passare all'ext3 con "tune2fs -j /dev/hda1" in cui hda1 è la vostra root partition e modificando ext2 in ext3 in /etc/fstab; effettuare tale operazione anche sulle altre partizioni; occhio che se avete il kernel 2.6 dovete creare l'initrd... v. tutorial di Michele sulla installazione del kernel 2.6. Se già avete l'ext3, non avete questo problema, e l'fsck verrà fatto se _veramente_ il fs ha problemi (in tal caso è _veramente_ opportuno farglielo eseguire). L'fsck viene fatto automaticamente anche se non ci sono stati crash ed è ext3, dopo un tempo o numero di reboot prefissati. Questi valori ve li ha detti in fase di formattazione del file-system e possono essere visti con "tune2fs -l /dev/hda1"; se si ritiene che siano troppo frequenti o si vuole che non si facciano, dare "tune2fs -c 0 -i 0 /dev/hda1" per disattivarli o per cambiare la frequenza (v. "man tune2fs")


Questi sistemi si potrebbero applicare a molti altri programmi, ma quelli che ritengo più lenti sono questi.
Durante il boot vi accorgerete di un log leggermente più disordinato rispetto a quello che c'è solitamente. Il problema è dovuto a quegli script che partono quasi in contemporanea.
Vi consiglio di non abusare di questa tecnica, e prima di applicarla controllare che il tempo richiesto da ogni processo richieda veramente di essere preso in considerazione (può darsi che qualcuna di queste modifiche implichi il recupero di soli uno o due secondi; in tal caso tornate indietro annullando la modifica)

NOTA: EFFETTUATE LE COPIE DEI FILE CHE ANDRETE A MODIFICARE PRIMA DI OGNI OPERAZIONE!!!!!


Matteo
matteo
 
Messaggi: 327
Iscritto il: ven mar 17, 2006 10:22 am

Messaggioda Michele » mer apr 19, 2006 2:03 pm

ho semplicemente seguito il primo punto: mettere l'hotplug in backgroumd, e le prestazioni in avvio sono discretamente migliorate...
MiTiCo Matt!!! :wink:
Michele
 
Messaggi: 308
Iscritto il: ven mar 17, 2006 2:14 am


Torna a Unix, Linux & reti

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

cron