GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo acelerar el proceso de arranque de Linux usando ejemplos de comandos de Startpar

En un escenario típico, durante el proceso de inicio, los scripts de inicio del sistema de nivel de ejecución se ejecutan uno por uno.

Una secuencia de comandos de inicio de nivel de ejecución en particular no se ejecutará hasta que la secuencia de comandos anterior se ejecute por completo. Si un servicio en particular durante el inicio se bloquea por algún motivo, puede pasar un tiempo antes de que se agote el tiempo de espera y pase a la siguiente secuencia de comandos de inicio.

La utilidad Startpar se utiliza para ejecutar varios scripts de nivel de ejecución en paralelo. Esto ayuda a acelerar el proceso de arranque de su servidor.

La utilidad Startpar es parte del paquete sysvinit.

La sintaxis general para el startpar se da a continuación:

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

Las siguientes son las diversas opciones de startpar:

  • -p Número de procesos a ejecutar en paralelo.
  • -i Cambia el factor de ponderación del bloque de proceso. El valor predeterminado es 800.
  • -t Tiempo de espera para vaciar el búfer de un script si no se ha producido ningún resultado.
  • -T Tiempo de espera global. Se utiliza para vaciar la salida del búfer de scripts anteriores.
  • -a Argumentos que se proporcionarán a todos los scripts.
  • -M Cambia startpar al modo "hacer".
  • -P Especificar el nivel de ejecución anterior
  • -N Especificar el siguiente nivel de ejecución

Cuando startpar está ejecutando los scripts de nivel de ejecución, la salida de los scripts se almacena en búfer para permitir la escritura controlada en las instalaciones de registro.

Si otros scripts se ejecutan en paralelo, espera a que se complete el registro y luego escribe los datos del búfer en el área de registro. Las opciones –t y –T se utilizan para controlar la limpieza de estos búferes según el tiempo transcurrido desde la última salida que se capturó en el búfer.

En mi sistema, tengo la siguiente versión para startpar:

# startpar -v
startpar version 0.54

El comando Startpar se puede usar en un modo "hacer" usando la opción -M. En este modo, startpar usa los siguientes archivos para decidir cómo ejecutar los scripts de inicio.
/etc/init.d/.depend.start
/etc/init.d/.depend.stop
/etc/init.d/.depend.boot

Aquí hay un ejemplo de archivo .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

En el modo "hacer", startpar usa el archivo .depend.start para encontrar qué servicios dependientes deben iniciarse para comenzar a iniciar un servicio específico.

En la salida anterior, cuando startpar se ejecuta con el modo de inicio usando la opción make, los scripts dependientes se inician primero antes de que los scripts se ejecuten en paralelo.

Aquí hay un ejemplo de cómo se puede usar startpar en el modo de creación durante la secuencia de inicio 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"

En el ejemplo anterior, startpar se ejecuta con el número total de 4 procesos para ejecutarse en paralelo con un tiempo de espera de 20 segundos, tiempo de espera global de 3 segundos para vaciar el área del búfer, -M en modo hacer con la opción "iniciar" para indicar que el inicio es siendo utilizado en la secuencia de inicio.

Esto usará /etc/init.d/.depend. archivo de inicio para verificar los scripts que dependen unos de otros. –P es el nivel de ejecución anterior –N es el nuevo nivel de ejecución.

Aquí hay otro ejemplo para usar startpar solo para ejecutar 2 scripts en paralelo, también puede definir este script en /etc/init.d/rc para asegurarse de que estos scripts se inicien en paralelo durante el inicio del sistema si es necesario.

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

También en algunas distribuciones de Linux, puede configurar el sistema para usar la opción startpar en el archivo /etc/init.d/rc.

En el archivo rc, simplemente cambie el valor "CONCURRENCY=SHELL" a "CONCURRENCY=STARTPAR", que debería calcular las dependencias automáticamente e iniciar los scripts aplicables en paralelo.

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

Linux
  1. Cómo reiniciar Linux usando la línea de comandos

  2. ¿Cómo matar un proceso en Linux usando el comando?

  3. Cómo combinar Ping y Traceroute en Linux usando ejemplos de comandos MTR

  4. Ejemplos de uso del comando dmsetup en Linux

  5. Ejemplos de comandos pkill en Linux

Cómo usar el comando Grep en Linux + Ejemplos útiles de Grep

Cómo tomar capturas de pantalla en Linux usando Scrot

Los 30 mejores ejemplos de comandos para monitorear en Linux

Comando Killall en Linux con ejemplos

Cómo iniciar en la línea de comandos de Linux

Cómo MATAR un proceso en Linux