GNU/Linux >> Tutoriels Linux >  >> Linux

Comment accélérer le processus de démarrage Linux à l'aide d'exemples de commande Startpar

Dans un scénario typique, pendant le processus de démarrage, les scripts de démarrage du système au niveau de l'exécution sont exécutés un par un.

Un script de démarrage de niveau d'exécution particulier ne s'exécutera pas tant que le script précédent n'aura pas été complètement exécuté. Si un service particulier au démarrage se bloque pour une raison quelconque, il peut s'écouler un certain temps avant qu'il n'expire et passe au script de démarrage suivant.

L'utilitaire Startpar est utilisé pour exécuter plusieurs scripts de niveau d'exécution en parallèle. Cela permet d'accélérer le processus de démarrage de votre serveur.

L'utilitaire Startpar fait partie du package sysvinit.

La syntaxe générale du startpar est donnée ci-dessous :

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

Voici les différentes options de startpar :

  • -p Nombre de processus à exécuter en parallèle.
  • -i Modifier le facteur de pondération du bloc de processus. La valeur par défaut est 800.
  • -t Timeout pour vider le tampon d'un script si aucune sortie ne s'est produite.
  • -T Délai d'attente global. Il est utilisé pour vider la sortie du tampon des scripts précédents .
  • -a Arguments à fournir à tous les scripts.
  • -M Bascule startpar en mode "make".
  • -P Spécifier le niveau d'exécution précédent
  • -N Spécifier le niveau d'exécution suivant

Lorsque startpar exécute les scripts de niveau d'exécution, la sortie des scripts est mise en mémoire tampon pour permettre une écriture contrôlée dans les fonctions de journalisation.

Si d'autres scripts s'exécutent en parallèle, il attend que la journalisation soit terminée, puis il écrit les données du tampon dans la zone de journalisation. Les options –t et –T sont utilisées pour contrôler l'effacement de ces tampons en fonction du temps écoulé depuis la dernière sortie capturée dans le tampon.

Sur mon système, j'ai la version suivante pour startpar :

# startpar -v
startpar version 0.54

La commande Startpar peut être utilisée en mode « make » à l'aide de l'option –M. Dans ce mode, startpar utilise les fichiers suivants pour décider comment exécuter les scripts de démarrage.
/etc/init.d/.depend.start
/etc/init.d/.depend.stop
/etc/init.d/.depend.boot

Voici un exemple de fichier .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 mode "make", startpar utilise le fichier .depend.start pour trouver quels services dépendants doivent être démarrés afin de commencer à démarrer un service spécifique.

Dans la sortie ci-dessus, lorsque startpar est exécuté avec le mode de démarrage à l'aide de l'option make, les scripts dépendants sont démarrés en premier avant que les scripts ne soient exécutés en parallèle.

Voici un exemple d'utilisation de startpar en mode make pendant la séquence de démarrage du système,

# 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"

Dans l'exemple ci-dessus, startpar est exécuté avec le nombre total de 4 processus à exécuter en parallèle avec un délai d'attente de 20 secondes, un délai d'attente global de 3 secondes pour vider la zone tampon, -M en mode make avec l'option "start" pour indiquer que le démarrage est utilisé dans la séquence de démarrage.

Cela utilisera /etc/init.d/.depend. fichier de démarrage pour vérifier les scripts qui dépendent les uns des autres. –P est le niveau d'exécution précédent –N est le nouveau niveau d'exécution.

Voici un autre exemple pour utiliser startpar juste pour exécuter 2 scripts en parallèle, vous pouvez également définir ce script sur /etc/init.d/rc pour vous assurer que ces scripts démarrent en parallèle lors du démarrage du système si nécessaire.

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

Également dans certaines distributions Linux, vous pouvez configurer le système pour utiliser l'option startpar dans le fichier /etc/init.d/rc.

Dans le fichier rc, changez simplement la valeur "CONCURRENCY=SHELL" en "CONCURRENCY=STARTPAR", qui devrait calculer automatiquement les dépendances et démarrer les scripts applicables en parallèle.

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

Linux
  1. Comment redémarrer Linux en utilisant la ligne de commande

  2. Comment tuer un processus sous Linux en utilisant la commande ?

  3. Comment changer la priorité des processus à l'aide des exemples Linux Nice et Renice

  4. Comment naviguer dans la ligne de commande Linux à l'aide du raccourci clavier (exemples de commande Linux Ctrl)

  5. Comment ajouter plusieurs routes sous Linux à l'aide d'exemples de commande ip

Comment utiliser la commande Grep sous Linux + exemples utiles de Grep

Comment faire des captures d'écran sous Linux avec Scrot

30 meilleurs exemples de commandes pour la surveillance sous Linux

Commande Killall sous Linux avec des exemples

Comment démarrer en ligne de commande Linux

Comment tuer un processus sous Linux