web-dev-qa-db-fra.com

Initrd.img (le "chargement du ramdisk initial ..." de grub ralentit-il mon démarrage?

Je suis sur un disque SSD où la fragmentation des fichiers ne devrait pas avoir d'importance, mais j'ai remarqué que le message "chargement du disque virtuel initial ..." dans grub prend plus de temps que je ne le pense. Cela dure environ 7 secondes avant que Plymouth ne s'exécute. Plymouth ne prend que 3 secondes environ (ce serait bien si elle commençait plus tôt et durait plus longtemps). Ensuite, l’écran lightdm/greeter apparaît en 2 à 3 secondes.

J'ai donc expérimenté un peu et lancé filefrag -v /boot/init* et j'ai remarqué que mon noyau 4.4.0-53 semblait trop fragmenté:

File size of /boot/initrd.img-4.4.0-53-generic is 49027703 (11970 blocks of 4096 bytes)
 ext:     logical_offset:        physical_offset: length:   expected: flags:
   0:        0..       3:    4351562..   4351565:      4:            
   1:        4..    4095:    2334720..   2338811:   4092:    4351566:
   2:     4096..    8191:    2330624..   2334719:   4096:    2338812:
   3:     8192..   10239:    2355200..   2357247:   2048:    2334720:
   4:    10240..   11969:    2408448..   2410177:   1730:    2357248: last,eof

Je suis curieux de savoir comment un initrd.img fragmenté affectera les performances de démarrage. Vaut-il la peine de défragmenter?

Bien sûr, je suis toujours ouvert aux suggestions pour rendre initrd.img plus petit et plus rapide.

Remarque: Outre le disque SSD mSata et le disque SSD pleine taille, mon ordinateur portable est équipé d'un disque dur pleine taille contenant Ubuntu 14.04. Je suis donc intéressé par la défragmentation initrd.img en général, pas seulement pour les SSD. La session de démarrage actuelle provient du SSD mSata, mais elle est limitée aux vitesses SATA II, contrairement aux disques pleine taille qui sont sur le bus SATA III.

EDIT 1: - systemd Boot Chart

Selon les commentaires ci-dessous, j'ai inclus le systemd-bootchart qui est généré en modifiant les paramètres du noyau grub avec:

GRUB_CMDLINE_LINUX_DEFAULT="splash vt.handoff=7 kaslr init=/lib/systemd/systemd-bootchart"

Le tableau de démarrage est enregistré dans: /run/log/bootchart-20161224-1801.svg. Je devais utiliser gimp pour l'ouvrir et l'exporter au format .jpg à 75% de qualité pour l'adapter à la limite de 2,1 MB de Ask Ubuntu. Le fichier exporté est présenté ci-dessous:

systemd bootchart

Notez le délai de 9 secondes au début. Le délai "normal" de 7 secondes pour le message "Chargement du disque principal initial ..." dans le fichier grub est maintenant d’environ 10 secondes. Le temps supplémentaire probablement attribuable à la surcharge de systemd-bootchart .

EDIT 2: RAM et cgroups

Selon les commentaires (demandes) ci-dessous RAM et cgroups de /var/log/syslog sont inclus dans cette modification.

Sortie de free -m:

$ free -m
              total        used        free      shared  buff/cache   available
Mem:           7843        3167         820        1574        3854        2740
Swap:          7999           4        7995

Notez que SWAP n’est utilisé que pour tester OOM Killer et peut être effacé. En effet, techniquement, il ne devrait pas être sur un disque SSD en premier lieu.

Sortie de grep cgroup < /var/log/syslog.1:

$ grep cgroup < /var/log/syslog.1
Dec 24 15:22:50 Dell kernel: [    0.000000] Initializing cgroup subsys cpuset
Dec 24 15:22:50 Dell kernel: [    0.000000] Initializing cgroup subsys cpu
Dec 24 15:22:50 Dell kernel: [    0.000000] Initializing cgroup subsys cpuacct
Dec 24 15:22:50 Dell kernel: [    0.011642] Initializing cgroup subsys io
Dec 24 15:22:50 Dell kernel: [    0.011645] Initializing cgroup subsys memory
Dec 24 15:22:50 Dell kernel: [    0.011651] Initializing cgroup subsys devices
Dec 24 15:22:50 Dell kernel: [    0.011653] Initializing cgroup subsys freezer
Dec 24 15:22:50 Dell kernel: [    0.011655] Initializing cgroup subsys net_cls
Dec 24 15:22:50 Dell kernel: [    0.011657] Initializing cgroup subsys perf_event
Dec 24 15:22:50 Dell kernel: [    0.011659] Initializing cgroup subsys net_prio
Dec 24 15:22:50 Dell kernel: [    0.011662] Initializing cgroup subsys hugetlb
Dec 24 15:22:50 Dell kernel: [    0.011664] Initializing cgroup subsys pids
Dec 24 15:22:50 Dell kernel: [    6.204710] cgroup: new mount options do not match the existing superblock, will be ignored
Dec 24 15:23:33 Dell kernel: [    0.000000] Initializing cgroup subsys cpuset
Dec 24 15:23:33 Dell kernel: [    0.000000] Initializing cgroup subsys cpu
Dec 24 15:23:33 Dell kernel: [    0.000000] Initializing cgroup subsys cpuacct
Dec 24 15:23:33 Dell kernel: [    0.010846] Initializing cgroup subsys io
Dec 24 15:23:33 Dell kernel: [    0.010849] Initializing cgroup subsys memory
Dec 24 15:23:33 Dell kernel: [    0.010855] Initializing cgroup subsys devices
Dec 24 15:23:33 Dell kernel: [    0.010857] Initializing cgroup subsys freezer
Dec 24 15:23:33 Dell kernel: [    0.010860] Initializing cgroup subsys net_cls
Dec 24 15:23:33 Dell kernel: [    0.010861] Initializing cgroup subsys perf_event
Dec 24 15:23:33 Dell kernel: [    0.010864] Initializing cgroup subsys net_prio
Dec 24 15:23:33 Dell kernel: [    0.010867] Initializing cgroup subsys hugetlb
Dec 24 15:23:33 Dell kernel: [    0.010868] Initializing cgroup subsys pids
Dec 24 15:23:33 Dell kernel: [    7.338815] cgroup: new mount options do not match the existing superblock, will be ignored
Dec 24 15:45:25 Dell kernel: [    0.000000] Initializing cgroup subsys cpuset
Dec 24 15:45:25 Dell kernel: [    0.000000] Initializing cgroup subsys cpu
Dec 24 15:45:25 Dell kernel: [    0.000000] Initializing cgroup subsys cpuacct
Dec 24 15:45:25 Dell kernel: [    0.010844] Initializing cgroup subsys io
Dec 24 15:45:25 Dell kernel: [    0.010847] Initializing cgroup subsys memory
Dec 24 15:45:25 Dell kernel: [    0.010853] Initializing cgroup subsys devices
Dec 24 15:45:25 Dell kernel: [    0.010855] Initializing cgroup subsys freezer
Dec 24 15:45:25 Dell kernel: [    0.010857] Initializing cgroup subsys net_cls
Dec 24 15:45:25 Dell kernel: [    0.010859] Initializing cgroup subsys perf_event
Dec 24 15:45:25 Dell kernel: [    0.010861] Initializing cgroup subsys net_prio
Dec 24 15:45:25 Dell kernel: [    0.010864] Initializing cgroup subsys hugetlb
Dec 24 15:45:25 Dell kernel: [    0.010866] Initializing cgroup subsys pids
Dec 24 15:45:25 Dell kernel: [    5.977461] cgroup: new mount options do not match the existing superblock, will be ignored
Dec 24 16:09:31 Dell kernel: [    0.000000] Initializing cgroup subsys cpuset
Dec 24 16:09:31 Dell kernel: [    0.000000] Initializing cgroup subsys cpu
Dec 24 16:09:31 Dell kernel: [    0.000000] Initializing cgroup subsys cpuacct
Dec 24 16:09:31 Dell kernel: [    0.010848] Initializing cgroup subsys io
Dec 24 16:09:31 Dell kernel: [    0.010852] Initializing cgroup subsys memory
Dec 24 16:09:31 Dell kernel: [    0.010858] Initializing cgroup subsys devices
Dec 24 16:09:31 Dell kernel: [    0.010860] Initializing cgroup subsys freezer
Dec 24 16:09:31 Dell kernel: [    0.010862] Initializing cgroup subsys net_cls
Dec 24 16:09:31 Dell kernel: [    0.010864] Initializing cgroup subsys perf_event
Dec 24 16:09:31 Dell kernel: [    0.010866] Initializing cgroup subsys net_prio
Dec 24 16:09:31 Dell kernel: [    0.010870] Initializing cgroup subsys hugetlb
Dec 24 16:09:31 Dell kernel: [    0.010871] Initializing cgroup subsys pids
Dec 24 16:09:31 Dell kernel: [    6.663158] cgroup: new mount options do not match the existing superblock, will be ignored
Dec 24 18:00:44 Dell kernel: [    0.000000] Initializing cgroup subsys cpuset
Dec 24 18:00:44 Dell kernel: [    0.000000] Initializing cgroup subsys cpu
Dec 24 18:00:44 Dell kernel: [    0.000000] Initializing cgroup subsys cpuacct
Dec 24 18:00:44 Dell kernel: [    0.011644] Initializing cgroup subsys io
Dec 24 18:00:44 Dell kernel: [    0.011647] Initializing cgroup subsys memory
Dec 24 18:00:44 Dell kernel: [    0.011654] Initializing cgroup subsys devices
Dec 24 18:00:44 Dell kernel: [    0.011656] Initializing cgroup subsys freezer
Dec 24 18:00:44 Dell kernel: [    0.011658] Initializing cgroup subsys net_cls
Dec 24 18:00:44 Dell kernel: [    0.011660] Initializing cgroup subsys perf_event
Dec 24 18:00:44 Dell kernel: [    0.011662] Initializing cgroup subsys net_prio
Dec 24 18:00:44 Dell kernel: [    0.011665] Initializing cgroup subsys hugetlb
Dec 24 18:00:44 Dell kernel: [    0.011667] Initializing cgroup subsys pids
Dec 24 18:00:44 Dell kernel: [    6.388658] cgroup: new mount options do not match the existing superblock, will be ignored
Dec 24 18:01:33 Dell kernel: [    0.000000] Initializing cgroup subsys cpuset
Dec 24 18:01:33 Dell kernel: [    0.000000] Initializing cgroup subsys cpu
Dec 24 18:01:33 Dell kernel: [    0.000000] Initializing cgroup subsys cpuacct
Dec 24 18:01:33 Dell kernel: [    0.010850] Initializing cgroup subsys io
Dec 24 18:01:33 Dell kernel: [    0.010854] Initializing cgroup subsys memory
Dec 24 18:01:33 Dell kernel: [    0.010860] Initializing cgroup subsys devices
Dec 24 18:01:33 Dell kernel: [    0.010862] Initializing cgroup subsys freezer
Dec 24 18:01:33 Dell kernel: [    0.010864] Initializing cgroup subsys net_cls
Dec 24 18:01:33 Dell kernel: [    0.010866] Initializing cgroup subsys perf_event
Dec 24 18:01:33 Dell kernel: [    0.010868] Initializing cgroup subsys net_prio
Dec 24 18:01:33 Dell kernel: [    0.010871] Initializing cgroup subsys hugetlb
Dec 24 18:01:33 Dell kernel: [    0.010873] Initializing cgroup subsys pids
Dec 24 18:01:34 Dell kernel: [   12.036550] cgroup: new mount options do not match the existing superblock, will be ignored

Notez que ce journal contient plusieurs bottes.

Edit 3 - Vitesse améliorée.

Après avoir mis en œuvre la réponse à la question et réponse, j’ai écrit ( Comment puis-je configurer un mot de passe pour la commande 'rm'? ) dans lequel un mot de passe de script wrapper protège la commande rm, la vitesse de démarrage a doublé.

Voici le nouveau graphique:

bootchart dec 30

2
WinEunuuchs2Unix

Je ne pense pas que la défragmentation soit votre problème, mais vous pouvez le faire ...

Dans terminal...

  • tapez man update-initramfs # pour en savoir plus sur cette commande.

  • puis tapez Sudo update-initramfs -c # pour créer un nouveau fichier à partir de zéro.

  • puis tapez reboot

1
heynnema