Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Accélérer le boot


256JMAN
 Share

Messages recommandés

Salut !

 

J'ai remonté mon vieux dell optiplex ce weekend pour me faire un serveur son

J'essai d'avoir un boot quasi immédiat et la je bloque à 10 secondes

 

1° - Je me demandais si compresser un noyau (avec lzma par exemple) pourrait accelerer mon boot ?

 

2° - Sur cette vidéo (

) je remarque que pendant le boot on ne vois que la commande de lancement par grub

Est ce que si j'arrive a ne plus affiché les informations du noyau et de l'init je peu esperer gratter quelques (centieme de) secondes ?

 

 

enfin apres avoir lu ce journal ( => https://linuxfr.org//~patrick_g/27236.html )

je me dit qu'il y a 5 secondes a gagné ... mais comment ? (sachant que j'utilise un noyau compilé avec jusque ce que j'ai besion ainsi qu'openrc 2.5)

 

si ca peu servir voila un demsg

Linux version 2.6.16-rt29-tglx4 ([email protected]) (gcc version 4.1.2 (Gentoo 4.1.2)) #8 PREEMPT Tue Nov 11 12:30:49 Local time zone must be set--see

BIOS-provided physical RAM map:

BIOS-e820: 0000000000000000 - 00000000000a0000 (usable)

BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)

BIOS-e820: 0000000000100000 - 0000000017e77000 (usable)

BIOS-e820: 0000000017e77000 - 0000000017e79000 (ACPI NVS)

BIOS-e820: 0000000017e79000 - 0000000018000000 (reserved)

BIOS-e820: 00000000fec00000 - 00000000fec10000 (reserved)

BIOS-e820: 00000000fee00000 - 00000000fee10000 (reserved)

BIOS-e820: 00000000ffb00000 - 0000000100000000 (reserved)

382MB LOWMEM available.

On node 0 totalpages: 97911

DMA zone: 4096 pages, LIFO batch:0

DMA32 zone: 0 pages, LIFO batch:0

Normal zone: 93815 pages, LIFO batch:31

HighMem zone: 0 pages, LIFO batch:0

DMI 2.3 present.

ACPI: RSDP (v000 DELL ) @ 0x000fd560

ACPI: RSDT (v001 DELL GX50 0x00000008 ASL 0x00000061) @ 0x000fd574

ACPI: FADT (v001 DELL GX50 0x00000008 ASL 0x00000061) @ 0x000fd5a8

ACPI: SSDT (v001 DELL st_ex 0x00001000 MSFT 0x0100000d) @ 0xfffe5fc9

ACPI: MADT (v001 DELL GX50 0x00000008 ASL 0x00000061) @ 0x000fd61c

ACPI: BOOT (v001 DELL GX50 0x00000008 ASL 0x00000061) @ 0x000fd678

ACPI: DSDT (v001 DELL dt_ex 0x00001000 MSFT 0x0100000d) @ 0x00000000

ACPI: PM-Timer IO Port: 0x808

Allocating PCI resources starting at 20000000 (gap: 18000000:e6c00000)

Detected 1296.142 MHz processor.

Real-Time Preemption Support © 2004-2006 Ingo Molnar

Built 1 zonelists

Kernel command line: root=/dev/hda1

Enabling fast FPU save and restore... done.

Enabling unmasked SIMD FPU exception support... done.

Initializing CPU#0

WARNING: experimental RCU implementation.

PID hash table entries: 2048 (order: 11, 32768 bytes)

Event source pit installed with caps set: 0d

Console: colour VGA+ 80x25

Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)

Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)

Memory: 385204k/391644k available (1800k kernel code, 6056k reserved, 460k data, 132k init, 0k highmem)

Checking if this processor honours the WP bit even in supervisor mode... Ok.

Calibrating delay using timer specific routine.. 2592.88 BogoMIPS (lpj=1296442)

Mount-cache hash table entries: 512

CPU: After generic identify, caps: 0383fbff 00000000 00000000 00000000 00000000 00000000 00000000

CPU: After vendor identify, caps: 0383fbff 00000000 00000000 00000000 00000000 00000000 00000000

CPU: L1 I cache: 16K, L1 D cache: 16K

CPU: L2 cache: 256K

CPU: After all inits, caps: 0383fbff 00000000 00000000 00000040 00000000 00000000 00000000

CPU: Intel® Celeron CPU 1300MHz stepping 01

Checking 'hlt' instruction... OK.

ACPI: setting ELCR to 0200 (from 0e80)

NET: Registered protocol family 16

ACPI: bus type pci registered

PCI: PCI BIOS revision 2.10 entry at 0xfbe8e, last bus=1

PCI: Using configuration type 1

ACPI: Subsystem revision 20060127

ACPI: Interpreter enabled

ACPI: Using PIC for interrupt routing

ACPI: PCI Root Bridge [PCI0] (0000:00)

PCI: Probing PCI hardware (bus 00)

ACPI: Assume root bridge [\_SB_.PCI0] bus is 0

Boot video device is 0000:00:01.0

PCI quirk: region 0800-087f claimed by ICH4 ACPI/GPIO/TCO

PCI quirk: region 0880-08bf claimed by ICH4 GPIO

PCI: Transparent bridge - 0000:00:1e.0

ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]

ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PCI1._PRT]

ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 7 *9 10 11 12 15)

ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 7 9 *10 11 12 15)

ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 *7 9 10 11 12 15)

ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 7 9 10 *11 12 15)

ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 7 9 10 11 12 15) *0

ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 6 7 9 10 11 12 15) *0

ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 7 9 10 11 12 15) *0

ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 6 7 9 10 11 12 15) *0

PCI: Using ACPI for IRQ routing

PCI: If a device doesn't work, try "pci=routeirq". If it helps, post a report

PCI: Ignore bogus resource 6 [0:0] of 0000:00:01.0

PCI: Bridge: 0000:00:1e.0

IO window: e000-efff

MEM window: ff800000-ff9fffff

PREFETCH window: 20000000-200fffff

PCI: Setting latency timer of device 0000:00:1e.0 to 64

Simple Boot Flag at 0x7a set to 0x80

io scheduler noop registered

io scheduler anticipatory registered (default)

Real Time Clock Driver v1.12ac

Linux agpgart interface v0.101 © Dave Jones

agpgart: Detected an Intel i810 E Chipset.

agpgart: AGP aperture is 64M @ 0xf8000000

serio: i8042 AUX port at 0x60,0x64 irq 12

serio: i8042 KBD port at 0x60,0x64 irq 1

Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing disabled

ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 7

PCI: setting IRQ 7 as level-triggered

ACPI: PCI Interrupt 0000:01:0c.0[A] -> Link [LNKC] -> GSI 7 (level, low) -> IRQ 7

3c59x: Donald Becker and others. www.scyld.com/network/vortex.html

0000:01:0c.0: 3Com PCI 3c905C Tornado at d8806c00. Vers LK1.1.19

Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2

ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx

ICH: IDE controller at PCI slot 0000:00:1f.1

ICH: chipset revision 2

ICH: not 100% native mode: will probe irqs later

ide0: BM-DMA at 0xffa0-0xffa7, BIOS settings: hda:DMA, hdb:pio

Probing IDE interface ide0...

hda: Hitachi HDS721616PLAT80, ATA DISK drive

ide0 at 0x1f0-0x1f7,0x3f6 on irq 14

hda: max request size: 512KiB

hda: 312581808 sectors (160041 MB) w/7376KiB Cache, CHS=19457/255/63, UDMA(33)

hda: cache flushes supported

hda: hda1 hda2

mice: PS/2 mouse device common for all mice

Advanced Linux Sound Architecture Driver Version 1.0.11rc2 (Wed Jan 04 08:57:20 2006 UTC).

ACPI: PCI Interrupt Link [LNKB] enabled at IRQ 10

PCI: setting IRQ 10 as level-triggered

ACPI: PCI Interrupt 0000:00:1f.5 -> Link [LNKB] -> GSI 10 (level, low) -> IRQ 10

PCI: Setting latency timer of device 0000:00:1f.5 to 64

intel8x0_measure_ac97_clock: measured 50993 usecs

intel8x0: clocking to 41900

ALSA device list:

#0: Intel 82801AA-ICH with AD1885 at 0xd800, irq 10

NET: Registered protocol family 2

IP route cache hash table entries: 4096 (order: 2, 16384 bytes)

TCP established hash table entries: 16384 (order: 7, 524288 bytes)

TCP bind hash table entries: 16384 (order: 6, 458752 bytes)

TCP: Hash tables configured (established 16384 bind 16384)

TCP reno registered

TCP bic registered

NET: Registered protocol family 1

NET: Registered protocol family 17

Using IPI Shortcut mode

Time: tsc clocksource has been installed.

EXT3-fs: mounted filesystem with ordered data mode.

kjournald starting. Commit interval 5 seconds

VFS: Mounted root (ext3 filesystem) readonly.

Freeing unused kernel memory: 132k freed

EXT3 FS on hda1, internal journal

ACPI: PCI Interrupt 0000:01:0c.0[A] -> Link [LNKC] -> GSI 7 (level, low) -> IRQ 7

 

et mes scripts init qui sont lancé au démarrage

sh-3.2# rc-update show

hostname | default

sshd | default

root | boot

local | boot

sysctl | boot

keymaps | boot

alsasound | default

sh-3.2#

 

(dans le script init "local" il y a un startx)

Lien vers le commentaire
Partager sur d’autres sites

1) Compresser le noyau oblige à le décompresser pour pouvoir exécuter le code qu'il renferme. Comment pourrais-tu gagner du temps par rapport à un noyau non compressé ?!

 

2) Dans ton bootloader, passe l'option "quiet" au noyau ;-)

 

Plutôt que le (long !) résultat de dmesg, poste plutôt l'image générée par Bootchart ;-)

Tu utilises initng ?

 

Mon record personnel "sans trop forcer" avec un init "normal" (i.e. pas initng) est de 18s sur une EeeBox.

Lien vers le commentaire
Partager sur d’autres sites

1) Compresser le noyau oblige à le décompresser pour pouvoir exécuter le code qu'il renferme. Comment pourrais-tu gagner du temps par rapport à un noyau non compressé ?!

ah ok ... j'avais cru lire quelque part qu'on pouvait lancer un noyau compressé (j'ai du mal comprendre ou rever :P)

2) Dans ton bootloader, passe l'option "quiet" au noyau :P

ok ... je ne sais pas si j'ai gagné quelque chose en tout cas question esthétique ca me plais plus comme ca ! :P

 

Plutôt que le (long !) résultat de dmesg, poste plutôt l'image générée par Bootchart :P

Figure toi que c'est ce que j'essai de faire depuis que j'ai ouvert le topic !

en suivant la doc j'ai modifier mon fichier grub.conf comme cela :

default 0
timeout 0
hiddenmenu
title Gentoo Sound Server
root (hd0,0)
kernel /boot/vmlinuz-2.6.16-rt29-tglx4 root=/dev/hda1 quiet init=/sbin/bootchartd

mais ca ne fonctionne pas

j'ai essayé de mettre init=/sbin/bootchartd start et la ca fonctionne mais bootchart continue a tourner une fois le boot terminé ... je doit donc l'arrêter manuellement ... et quand j'essai d'avoir un rendu en png sur le site de bootchart ca ne fonctionne pas ("Le serveur à l'adresse render.bootchart.org met trop de temps à répondre.")

[edit] ah bun visiblement c'est le serveur qui s'occupe du rendu en image qui en vrac chez bootchart :-/

Tu utilises initng ?

pas encore mais ca ne serait tardé :P (on verra ca une fois que j'arriverai a faire fonctionner bootchart ... histoire de mesurer le gain si il y en a ...)

Modifié par 256JMAN
Lien vers le commentaire
Partager sur d’autres sites

Pour bootchartd, laisse tomber le serveur et utilise plutôt l'outil fourni dans l'archive. Il te faut ant et un JDK pour le compiler / faire tourner. Ca sera beaucoup plus simple.

Bootchart s'arrête tout seul quand tu lui dis quel est le processus qui correspond à la "fin du boot". Par défaut il attend gdm ou kdm, donc si tu lances un startx dans rc.local (bouh ! pas propre ! prends plutôt mingetty et fais un auto-login avec un compte non-root...) il faut que tu indiques X (ou ton window-manager) dans exit_proc dans bootchartd (oui, c'est un script !)

Tu es en runlevel 2 ou 3 ?

Peut-être que ça lui pose un problème...

Lien vers le commentaire
Partager sur d’autres sites

Yo JM aN

Au lieu de compresser ton noyau, tu l'as réduit au minimum?? Genre dans les options virer le maximum de truc??

Tu peux aussi voir dans les options pour système embarqué...

 

Sinon, booter sur une clé USB ça serait pas plus rapide?

Lien vers le commentaire
Partager sur d’autres sites

Pour bootchartd, laisse tomber le serveur et utilise plutôt l'outil fourni dans l'archive. Il te faut ant et un JDK pour le compiler / faire tourner. Ca sera beaucoup plus simple.

 

Ok, ca c'est fait (j'aurai preferé passé par le serveur histoire d'eviter d'installer JDk et tout ce qui va avec ... mais bon ...)

 

Bootchart s'arrête tout seul quand tu lui dis quel est le processus qui correspond à la "fin du boot". Par défaut il attend gdm ou kdm, donc si tu lances un startx dans rc.local (...) il faut que tu indiques X (ou ton window-manager) dans exit_proc dans bootchartd (oui, c'est un script !)

Alors j'ai commencer a regarder et j'ai trouvé les fameuse ligne dont tu me parle :

# Wait for the boot process to end.
wait_boot()
{
	local runlevel=$( sed -n 's/.*:\(.*\):initdefault:.*/\1/gp' /etc/inittab )

	# The processes we have to wait for
	local exit_proc="gdmgreeter gdm-binary kdm_greet kdm"
	# early_login in FC4 starts gdm early, so fall back to mingetty
	local early_login="no"
	grep -q early_login /proc/cmdline && early_login="yes"
	if [ "$runlevel" -eq "2" -o "$runlevel" -eq "3" -o "$early_login" = "yes" ]; then
			exit_proc="mingetty agetty rungetty getty"
	fi
	while [ -f "$BOOTLOG_LOCK" ]; do
			if [ -n "$( pidof $exit_proc )" ]; then
					# Give the exit process some time to start
					sleep 5
					# Flush the log files
					stop
					return
			fi
			sleep 2
	done;
}

forcement ca ne pouvait pas marcher ... vue que je n'avais ni gdm ni kdm ni terminaux dans mon inittab ...

....

Et la en cherchant a t'expliquer tout ce que j'ai pu faire et qui n'a pas marché ... hé bun j'y suis enfin arrivé a faire fonctionner bootchart \o/

 

donc voila l'image ! http://images4.hiboox.com/images/4708/6142...7869593314b.png et voila ce que ca donne en video :Phttp://www.youtube.com/watch?v=Tb_xYM0HE7c

 

(...)tu lances un startx dans rc.local (bouh ! pas propre ! prends plutôt mingetty et fais un auto-login avec un compte non-root...)

 

Je veux bien ... mais pour faire ce que je veux (CAD démarrer X avant que init soit arriver au bout du boot) je vois pas trop comment faire avec mingetty (a part le mettre lui aussi dans rc.local ... mais bon ... :P))

 

 

Au lieu de compresser ton noyau, tu l'as réduit au minimum?? Genre dans les options virer le maximum de truc??

tout est compilé en dur, le noyau pese 1.2mo ... je ne vois pas quoi enlever d'autre

 

Sinon, booter sur une clé USB ça serait pas plus rapide?

Comme je t'ai dit sur le chan :

- j'ai viré le support usb du kernel (et desactivé dans le bios)

- c'est un vieux dell optiplex qui n'a que l'usb 1.1 (donc ca va etre hyper lent ... et je doute fortement que l'usb 2 soit a la hauteur d'un bon vieux disque dur IDE 7200RPM)

 

Bon maintenant que j'ai réussi a faire fonctionner bootchart j'vai pouvoir tester initng (enfin quand j'aurai le temps ...)

Modifié par 256JMAN
Lien vers le commentaire
Partager sur d’autres sites

  • 1 month later...

Yeap!

 

Je cherche aussi à réduire le temps de boot...

Pour l'instant j'en suis qu'à l'étape de la configuration du noyau, et une question me trotte, module ou built-in(en dur)?

 

J'ai lu ci et là que les modules ne ralentissent pas forcément le boot?

Mais si j'ai des modules qui sont chargés à chaque démarrage(alsa,usb_core,mmc_core,....)il ne vaudrait pas mieux les mettre en dur?

 

Merci!

Lien vers le commentaire
Partager sur d’autres sites

Perso j'ai opté pour les modules, sauf pour :

* ce qui est strictement nécessaire au démarrage (support IDE/SATA, filesystem - pour pas m'obliger à booter sur un initrd -, bus en tous genre, ...)

* ce qui ralentit TOUT le système (qui fait une détection, par exemple) quand le module se charge au démarrage

 

De cette manière, on peut demander à l'OS de lancer n'importe quel script de démarrage sans avoir à se demander si les modules nécessaires sont bien chargés, et on peut lancer le script de chargement des modules / détection du matériel en tâche de fond (on n'a pas besoin de carte son, connexion réseau, support Bluetooth, etc. pendant qu'on lance une session X...)

Lien vers le commentaire
Partager sur d’autres sites

Arjan Van de Ven est arrivé a 5 seconde sur son netbook

http://linuxfr.org/2009/01/05/24842.html

Apparemment il aurait ecrit 3 patchs pour accélérer le boot (pas encore testé)

 

Dans cette news j'apprend aussi qu'on ne manque pas d'alternative a init ( http://linuxfr.org/comments/995943.html#995943 )

Je n'ai pas mesuré le gain de temps en utilisant init-ng sur ma petite installation, mais ca avait l'air d'être assé conséquent (depuis le disque dur de la machine a été réquisitionné pour quelque chose d'autre ... je recommencerais sur la mienne)

 

Enfin deja rien qu'un noyau compilé avec juste ce qu'il faut fait gagné pas mal de temps au chargement

 

Sinon le dernier noyau, linux-2.6.28, a une nouvelle fonction :

Le noyau 2.6.28 se dote d'un visualiseur de boot puisqu'il est désormais possible, si le noyau est compilé avec CONFIG_BOOT_TRACER, de générer des images au format SVG afin de visualiser tous le processus de boot. Cela permet de voir les appels bloquants et d'optimiser le temps de démarrage du noyau.

http://linuxfr.org/2008/12/25/24808.html

 

va faloire que je test ca aussi ^^

Lien vers le commentaire
Partager sur d’autres sites

Ouaip pour les alternatives à init, faut matter la page de Wikipedia EN Other Styles Init on Wikipedia.

 

J'ai lu qu'init-ng n'était pas forcémént le plus rapide.

runit serait un peu mieux et plus stable(en tout cas il paraît plus testé...).

Enfin il y en a pas mal...Le truc c'est de savoir ce que pas poser comme problème si un init est foireux??Corruption de système de fichier?Plantage complet?

 

Je verrai ça plus tard perso.

 

En tout cas je vais activer le CONFIG_BOOT_TRACER! Ca peut être plus interessant.

Comment l'utiliser?

1.6. Boot tracer

The purpose of this tracer is to helps developers to optimize boot times: it records the timings of the initcalls. Its aim is to be parsed by the scripts/bootgraph.pl tool to produce graphics about boot inefficiencies, giving a visual representation of the delays during initcalls. Users need to enable CONFIG_BOOT_TRACER, boot with the "initcall_debug" and "printk.time=1" parameters, and run "dmesg | perl scripts/bootgraph.pl > output.svg" to generate the final data.

Source: Linux 2.6.28 sur Linux Kernel Newbies.

 

 

Ciao

 

edit:PS:En ce moment je suis à 25 secondes pour le boot jusqu'au prompt gdm(que je vais sûrement virer pour repasser à SLiM). Et j'ai pas encore trop forcé.

 

 

edit: Rentré chez moi, je tente de chercher l'option CONFIG_BOOT_TRACER, mais pas moyen de mettre la main dessus... Normalement toutes les options doivent se trouver dans le. .config(même celle qui ne sont pas dispo via make menuconfig)??

 

edit: Trouvé! Il fallait activer Kernel Debugging(normal...) ^^

Modifié par lol.2.dol
Lien vers le commentaire
Partager sur d’autres sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

 Share

  • En ligne récemment   0 membre est en ligne

    Aucun utilisateur enregistré regarde cette page.

×
×
  • Créer...