Pagina 1 di 2

ottima velocità di boot: background dei processi in rc.M

Inviato: sab 5 nov 2005, 11:44
da pepe.carvalho
il mio pc faceva il boot del kernel 2.4 (slack 10.2) in poco più di un 1 minuto.
un tempo accettabile, ma in gran parte dedicato ad aspettare che hotplug venga eseguito.

Leggendo un po' su slacky.it e un po' su alt.os.linux.slackware ho provato a mettere in background l'esecuzione di questo processo.
A beneficio dei più inesperti, per fare questo, è necessario mettere mano al file rc.M, racchiudere tra parentesi il comando che fa partire il processo di hotplug, e farlo seguire da &.

Da quello che so, questo trucco si può applicare in pratica a tutti gli script lanciati da rc.M ma *non* a rc.inet1, altrimenti rischiate di avviare rc.inet2 senza che tutte le inizializzazioni necessarie siano state fatte.


Ad es. io ho messo in background crond, pcmcia, cups, ecc ecc.

Risultato: il tempo di boot è di 30 sec, esattamente la metà ;=)
in pratica, accedo alla shell che alcuni processi stanno ancora lavorando in bg, ma questo non pregiudica secondo me in nessun modo la funzionalità del sistema.


***//frammento preso da rc.M


-->inet1 non è mandato in background
# Initialize the networking hardware. If your network driver is a module
# and you haven't loaded it manually, this will be deferred until after
# the hotplug system loads the module below.
if [ -x /etc/rc.d/rc.inet1 ]; then
. /etc/rc.d/rc.inet1
fi

pcmcia è invece avviato in background, così come il successivo inet2
# Initialize the hotplugging subsystem for Cardbus, IEEE1394, PCI, and USB devices:
if [ -x /etc/rc.d/rc.hotplug -a -r /proc/modules ]; then
# Don't run hotplug if 'nohotplug' was given at boot.
if ! grep nohotplug /proc/cmdline 1> /dev/null 2> /dev/null ; then
echo "Activating hardware detection: /etc/rc.d/rc.hotplug start"
#giorgio - backgrounding
(. /etc/rc.d/rc.hotplug start) &
fi
fi

# Start networking daemons:
if [ -x /etc/rc.d/rc.inet2 ]; then
(. /etc/rc.d/rc.inet2)&
fi

Inviato: sab 5 nov 2005, 11:59
da EMIX
Molto interessante..sicuramente da provare!

Ps: non penso che sia necessario racchiudere tra parentesi il comando che fa partire il processo di hotplug...io senza parentesi ho messo la & a fine riga e mi parte in background.

Inviato: sab 5 nov 2005, 13:49
da krisis
Infatti non è necessario mettere le parentesi.

Inviato: sab 5 nov 2005, 14:35
da ChriD
Cosa comporta far partire un processo in background????

perchè è possibile farlo con l'hotplug???? :?:

Inviato: sab 5 nov 2005, 14:52
da krisis
Fare partire un processo in bg libera il terminale e permette di iniziare nuovi task.
per esemio

Codice: Seleziona tutto

bash-3.00$ amsn &
[1] 3784
bash-3.00$
Come vedi amsn viene eseguito , viene riportato il pid ed il terminale è d inuovo disponibile , se non lo avessi mandato in bg quel terminale sarebbe rimasto occupato fino alla fine dell'esecuzione del programma.
Mandare in bg processi all'avvio fa risparimare tempo.

Inviato: sab 5 nov 2005, 15:03
da ChriD
krisis ha scritto:Fare partire un processo in bg libera il terminale e permette di iniziare nuovi task.
per esemio

Codice: Seleziona tutto

bash-3.00$ amsn &
[1] 3784
bash-3.00$
Come vedi amsn viene eseguito , viene riportato il pid ed il terminale è d inuovo disponibile , se non lo avessi mandato in bg quel terminale sarebbe rimasto occupato fino alla fine dell'esecuzione del programma.
Mandare in bg processi all'avvio fa risparimare tempo.
fico.....

adesso si che tutto inizia a gustarmi.....!!! :wink: :D

Inviato: sab 5 nov 2005, 15:37
da elettronicha
Nulla di nuovo sotto il sole, lo si consiglia da tempo immemore anche qui su questo forum. :)

Inviato: sab 5 nov 2005, 15:38
da krisis
eh già

Inviato: sab 5 nov 2005, 15:41
da darkside04
ho mandato in bkg i processi però il tempo in accesso è uguale 40 sec. senza bkg 40 sec. con i processi in bkg (tempi cronometrati), è necessario mettere & alla fine dello script vero??

Inviato: sab 5 nov 2005, 16:25
da pepe.carvalho
ho scritto chiaramente nel post che mi sono ispirato a quanto letto qui e sul Ng inglese, quindi i commenti con sufficienza del tipo "nulla di nuovo" non mi sembrano molto azzeccati.
mica ho spacciato nulla per un mio personale hack.

comunque x rispondere a darkside, sì la & è proprio quello che ti serve per mettere in bg i processi. la parentesi invece è facoltativa.
La & non la metti alla fine dello script, ma alla fine delle righe in cui ci vengono chiamati gli script che vuoi backgroundare.

comunque nel mio post iniziale ci sono dei frammenti di esempio

Inviato: sab 5 nov 2005, 16:59
da absinthe
darkside_04 ha scritto:ho mandato in bkg i processi però il tempo in accesso è uguale 40 sec. senza bkg 40 sec. con i processi in bkg (tempi cronometrati), è necessario mettere & alla fine dello script vero??
dipende da quanto ci mettono i processi a chiudere le operazioni sul pc... ad esempio io ho un script che carica il governor dell'acpi all'avvio: ci mette una frazione di secondo: se lo butto in bg non ci guadagno niente.

in pratica mettere in bg significa parallelizzare i processi: quello che guadagni in velocità di passaggio da un processo ad un altro lo perdi in tempo di esecuzione del processo stesso (la potenza ella cpu è "partizionata" su più operazioni).

detto in poche parole (visto che poi non me ne intendo) a te il bg magari ti fa una pippa... visto che il bootstrap fino all'accesso è ridotto a 40 secondi il margine di guadagno probabilmente è minimo

M.

Inviato: mar 4 apr 2006, 0:48
da sunreal
Io ho messo la & dopo . /etc/rc.d/rc.inet1 , ed effettivamente all'avvio il caricamento del sistema continua senza fermarsi a "pensare", visto che c' ero ho fatto anche un modifica suggerita in un vecchio how-to da un certo Bl4ck0ut, dio lo possa avere i gloria, è grazia a lui che alla prima installazione di slack non ho mandato tutti a cag....., comunque nel suo how-to diceva di commentare, nello stesso file, le righe di
Update the all shared library links
e anche questo funziona, prima ci volevano 15/20 secondi per passare questo scoglio, cosa dite è ancora valido, l'how-to è un po datato, oppure ci sono delle controindicazioni?
ciao.

Inviato: mar 4 apr 2006, 10:55
da pepe.carvalho
sunreal ha scritto: di commentare, nello stesso file, le righe di
Update the all shared library links
e anche questo funziona, prima ci volevano 15/20 secondi per passare questo scoglio, cosa dite è ancora valido, l'how-to è un po datato, oppure ci sono delle controindicazioni?
ciao.
questa e' una cosa un po' diversa: in pratica quando slack fa il boot, aggiorna tutti i link delle librerie (/sbin/ldconfig) e questo prende tempo.

Siccome nel 95% delle volte non ci sono modifiche nella configurazione delle librerie, e' anche inutile la maggior parte delle volte.
Anch'io ho commentato questa istruzione.
Ricordati che in rari casi (se ad. es. tenti di fare partire un'applicazione, e questa ti da' un errore di missing libraries per delle librerie che invece sono installaate) potresti avere bisogno comunque di dare il comando a mano.

Inviato: mar 4 apr 2006, 11:05
da sid77
krisis ha scritto:Infatti non è necessario mettere le parentesi.
è una sicurezza in più, è probabilissimo che non serva ma se c'è di sicuro non fa male

ciao

Inviato: mar 4 apr 2006, 13:10
da legionario
Secondo voi per quale motivo l'aggiunta di "&" dopo "startx -- :2" non mi libera il terminale da cui ho fatto partire il secondo xserver neanche dopo il completo caricamento di quest'ultimo?