GNU/Linux >> Linux Esercitazione >  >> Linux

Come accelerare il processo di avvio di Linux utilizzando gli esempi di comandi Startpar

In uno scenario tipico, durante il processo di avvio, gli script di avvio del sistema a livello di esecuzione vengono eseguiti uno per uno.

Un particolare script di avvio a livello di esecuzione non verrà eseguito fino a quando lo script precedente non verrà eseguito completamente. Se un particolare servizio durante l'avvio si blocca per qualche motivo, potrebbe volerci un po' prima che scada e passi allo script di avvio successivo.

L'utilità Startpar viene utilizzata per eseguire più script a livello di esecuzione in parallelo. Questo aiuta ad accelerare il processo di avvio del tuo server.

L'utilità Startpar fa parte del pacchetto sysvinit.

La sintassi generale per startpar è riportata di seguito:

startpar –p par –i iorate –t timeout –T global timeout –a arg prg1 prg2

startpar –p par –I iorate –t timeout –T global timeout –M boot|start|stop

Le seguenti sono le varie opzioni di startpar:

  • -p Numero di processi da eseguire in parallelo.
  • -i Modifica il fattore di pesatura del blocco di processo. Il valore predefinito è 800.
  • -t Timeout per svuotare il buffer di uno script se non si è verificato alcun output.
  • -T Timeout globale. Viene utilizzato per svuotare l'output del buffer degli script precedenti.
  • -a Argomenti da fornire a tutti gli script.
  • -M Passa alla modalità "make" di startpar.
  • -P Specifica il livello di esecuzione precedente
  • -N Specifica il livello di esecuzione successivo

Quando startpar esegue gli script a livello di esecuzione, l'output degli script viene memorizzato nel buffer per consentire la scrittura controllata nelle strutture di registrazione.

Se altri script vengono eseguiti in parallelo, attende il completamento della registrazione e quindi scrive i dati dal buffer nell'area di registrazione. Le opzioni –t e –T vengono utilizzate per controllare la cancellazione di questi buffer in base al tempo trascorso dall'ultimo output acquisito nel buffer.

Sul mio sistema, ho la seguente versione per startpar:

# startpar -v
startpar version 0.54

Il comando Startpar può essere utilizzato in modalità "make" utilizzando l'opzione –M. In questa modalità, startpar utilizza i seguenti file per decidere come eseguire gli script di avvio.
/etc/init.d/.depend.start
/etc/init.d/.depend.stop
/etc/init.d/.depend.boot

Ecco un esempio di file .depend.start:

# cat /etc/init.d/.depend.start
TARGETS = halt fbset lvm_wait_merge_snapshot microcode.ctl earlysyslog dbus acpid random purge-kernels reboot network haldaemon boot.clock syslog ford_tso_off Sts splash_early haveged rpcbind multipathd nfs smbfs kbd irq_balancer alsasound mcelog network-remotefs sshd java.binfmt_misc clamd logd gpm ntp single atd clamav-milter canna amavis cups nscd postfix xdm cron smartd
INTERACTIVE = kbd ntp single
network: dbus
haldaemon: dbus acpid
syslog: network earlysyslog
ford_tso_off: network
Sts: network
splash_early: syslog
haveged: syslog random
rpcbind: syslog
multipathd: syslog
nfs: rpcbind
.
.
.
.
mcelog: smbfs
network-remotefs: smbfs haldaemon

Nella modalità "make", startpar utilizza il file .depend.start per trovare quali servizi dipendenti devono essere avviati per avviare un servizio specifico.

Nell'output precedente, quando startpar viene eseguito con la modalità di avvio utilizzando l'opzione make, gli script dipendenti vengono avviati prima prima che gli script vengano eseguiti in parallelo.

Ecco un esempio di come utilizzare startpar in modalità make durante la sequenza di avvio del sistema,

# startpar -p 4 -t 20 -T 3 -M start -P N -R 2
D-Bus already started. Not starting.
Starting acpid                    done
Re-Starting syslog services       done
Starting service at daemon        done
Starting sound driver             done
Starting cupsd                    done
Starting CRON daemon/usr/sbin/cron: can't lock /var/run/cron.pid, otherpid may be 3506: Resource temporarily unavailable
startproc:  exit status of parent of /usr/sbin/cron: 1
                                  done
Starting irqbalance                                                       unused
HAL already started. Not starting.
Starting mcelog... already running                                        done
Setting up network interfaces:
    eth0      device: Intel Corporation 82545EM Gigabit Ethernet Co
    eth0      IP address: 19.86.xxx.xxx/24                                done
    eth1      device: Intel Corporation 82545EM Gigabit Ethernet Co
    eth1      IP address: 19.86.xxx.xxx/24                                done
Setting up service network  .  .  .  .  .  .  .  .  .  .                  done
Hint: you may set mandatory devices in /etc/sysconfig/network/config
Setting up (remotefs) network interfaces:
Setting up service (remotefs) network  .  .  .  .  .  .  .  .  .  .       done
Initializing random number generator                                      done
Starting smartd                                                           unused
Disabling TSO on all interfaces and adding ETHTOOL_OPTIONS to nic config files  done
Re-Starting syslog services              done
Starting haveged daemon                  done
failed_service="alsasound"
skipped_service="irq_balancer smartd"

Nell'esempio sopra, startpar viene eseguito con il numero totale di 4 processi da eseguire in parallelo con un timeout di 20 secondi, timeout globale di 3 secondi per svuotare l'area del buffer, -M in modalità make con l'opzione "start" per indicare che l'avvio è in uso nella sequenza di avvio.

Questo utilizzerà /etc/init.d/.depend. start per verificare gli script che dipendono l'uno dall'altro. –P è il livello di esecuzione precedente –N è il nuovo livello di esecuzione.

Ecco un altro esempio per usare startpar solo per eseguire 2 script in parallelo, puoi anche definire questo script su /etc/init.d/rc per assicurarti che questi script vengano avviati in parallelo durante l'avvio del sistema, se necessario.

# startpar -p 4 -t 20 -T 3 -a start /etc/init.d/ypxfrd /etc/init.d/drbd
Starting rpc.ypxfrd              done
Starting DRBD resources:
.
.

Anche in alcune distribuzioni Linux, puoi configurare il sistema per utilizzare l'opzione startpar nel file /etc/init.d/rc.

Nel file rc, basta modificare il valore "CONCURRENCY=SHELL" in "CONCURRENCY=STARTPAR", che dovrebbe calcolare le dipendenze automaticamente e avviare gli script applicabili in parallelo.

# vi /etc/init.d/rc
CONCURRENCY=STARTPAR

Linux
  1. Come uccidere un processo su Linux usando il comando?

  2. 5 Esempi pratici di comandi per il fusore Linux

  3. Come combinare Ping e Traceroute su Linux usando esempi di comandi MTR

  4. Esempi di utilizzo del comando dmsetup in Linux

  5. renice Esempi di comandi in Linux

Come utilizzare il comando Grep in Linux + utili esempi di Grep

Come fare screenshot su Linux usando Scrot

30 esempi di comandi principali per il monitoraggio in Linux

Comando Killall in Linux con esempi

Come avviare la riga di comando di Linux

Come KILL un processo su Linux