Pour évaluer la célérité de votre machine vous avez plusieurs solutions à votre disposition.
Celle ci:
et les autres...
Sommaire
Sous Windows
1ière approche
Une première approche est d'aller consulter les journaux de l'observateur d'évènements. Votre système stocke des journaux Ad vitam æternam, essayons donc de les utiliser une fois.
=> Recherchez dans le menu démarrer :
eventvwr
=> Ou clic droit sur Ordinateur / Gérer.
Vous arrivez directement dans l'observateur d'évènements ou dans l'outil de gestion de l'ordinateur. La console de gestion de l'ordinateur contient de nombreux "composants enfichables" permettant le paramétrage de votre usine à gaz favorite, dont l'observateur d'évènements. (voir la doc (si si, il peut y avoir une doc sous Windows)).
Parcourez l'arborescence à gauche:
Journaux des applications et des services / Microdaube / Windows / Diagnostics-Performance
Vous arrivez dans une liste d'évènements.
- Code 100: Mesure de la durée du démarrage.
- Code 200: Mesure de la durée de l'extinction.
- Code 107: Les ralentissements du démarrage dus au système.
- Code 108: Les ralentissements du démarrage dus à vos âneries.
- Code 20x: Les ralentissements divers lors de l'extinction.
Si vous cliquez/double cliquez sur un évènement vous aurez la description de l'évènement et un onglet "détails" avec plus de précisions. Les durées sont exprimées en millisecondes (=> On divise par 1000 pour avoir des secondes).
Tout cela est bien mais pas assez, en effet nous ne connaissons ni les services qui sont responsables des plus forts ralentissements, ni ceux qui sont dispensables, ni ceux qui sont installés par l'utilisateur et qui plombent les performances.
2ième approche
Microdaube met à disposition 2 outils pour analyser le démarrage d'une machine.
- Windows Performance Recorder.
- Windows Performance Analyzer.
Tous deux sont à installer depuis cette url.
Ne sélectionnez QUE "Windows Performance Toolkit" dans la liste sinon vous êtes partis pour installer 4Go de trucs inutiles... L'installation ne doit occuper que 190Mo.
Si vous avez une erreur, ne vous en faites pas, comptez sur l'outil de désinstallation pour planter à son tour:
(Coucou, je suis Windows Installer, des fois je désinstalle à moitié, les autres fois j'installe mais pas trop.)
Les outils seront accessibles via le menu démarrer dans "Windows Kits/Windows Performance Toolkit", et sur le disque dans "C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit".
=> Démarrez "Windows Performance Recorder", Affichez les options, sélectionnez dans "Performance scenario" : "boot".
Le nombre d'itérations est le nombre de redémarrages qui seront faits (plus de fiabilité donc).
=> Cliquez sur start
=> Si le "paging executive" est actif (c'est le cas par défaut); Une fenêtre vous alerte et vous force à le désactiver. Validez, redémarrez et recommencez la procédure...
Le "paging executive" est la faculté de Windows à décharger les programmes inutilisés de la mémoire RAM vers le swap en cas de mémoire RAM manquante. Ne laissez donc pas cette option désactivée après les analyses !
On lit partout que le swap est vilain, puisqu'il fait appel au disque dur, bien plus lent que la RAM. Toutefois aujourd'hui on a suffisamment de RAM et le déchargement en swap est rarissime (sur un système sain).
Pour réactiver "Pagging executive", copiez/collez ceci dans un fichier txt que vous renommerez avec un nom qui l'identifiera rapidement pour une prochaine fois.
Appelons le donc "bidule.reg". Il suffira de faire un clic droit dessus puis "Fusionner" pour modifier le registre.
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management]
"DisablePagingExecutive"=dword:00000000
Avec:
dword:00000000 => Pagging executive activé
dword:00000001 => Pagging executive désactivé
EDIT: vous pouvez aussi entrer la commande suivante dans une console en mode administrateur:
wpr -disablepagingexecutive on
wpr -disablepagingexecutive off
Documentation => https://support.microsoft.com/en-us/kb/184419. (pour Win XP je sais. Mais la doc de Windows est trop pratique pour trouver ce qu'on cherche quand on le cherche).
=> Après redémarrage, connectez vous comme d'habitude
(peut être faudrait-il activer momentanément le login automatique avant: commande "user controlpasswords2" voir Démarrage session automatique sans saisir le mot de passe. Ne laissez pas cette option activée ; Démarrer un système sans mot de passe est une connerie sans nom !)
=> Une fois sur le bureau vous serez notifié que le système continue à analyser le comportement de la machine pendant 2 minutes. Ne faites rien et attendez.
=> À la fin des 2 minutes vous aurez un bouton "Open With WPA". cliquez dessus. Ceci ouvre "Windows Performance Analyzer".
Windows, laisse des traces...
Les traces sont stockées dans "C:\Users\XXX\Documents\WPR Files". Pensez à faire le ménage, ces fichiers occupent au moins 300Mo par enregistrement !
La trace du boot est analysée via "Windows Performance Analyzer".
Vous vouliez des graphiques ? Vous en avez.
Des dizaines de graphiques !
C'est une grosse usine à gaz et il n'est pas évident d'identifier le service ou le programme qui ralentit tout le reste. Systemd sous Linux permet pourtant cela facilement enfin je dis ça je dis rien.
Tous les graphiques ont un axe des abscisses temporel : Du chargement du noyau jusqu'au moment où le système vous rend la main sur le bureau.
Si vous zoomez sur une phase précise, tous les autres graphiques suivront. Vous aurez donc une tranche de tout ce qui se passe sur le système à un instant t.
Maintenant je passe la main à cette excellente vidéo qui vous guidera:
En clair:
Sans rien modifier dans le logiciel WPA, vous devez voir que le graphique "Computation" ne présente pas de hausse à 100%. C'est à dire que, sauf si vous êtes sur SSD, le processeur ne doit JAMAIS être le facteur limitant. Si c'est le cas vous avez des processus clandestins à virer.
Vous devez voir (sauf si vous êtes sur SSD) que le facteur limitant est le disque dur. Il faut tout faire pour limiter cela => virez les processus non Microsoft qui demandent le plus d'opérations de lecture.
Appesantissez vous sur l'étape Post-boot. Les âneries que vous installez peuvent avoir une influence avant mais le système est souvent lent après le login.
Gardez en tête que Windows paramètre le lancement de certains services en tant que "lancement différé". Le nom est anodin mais en pratique il s'agit de services TRÈS gourmands qui se lancent bien après la période des 2 minutes vue ci-dessus.
Concrètement le système devient fluide quelques temps après le login puis redevient lent quelques minutes plus tard lors du lancement de Windows Defender, Update et j'en passe.
Exemples de graphiques
Graphique 1 : vue générale
Sur cette vue d'ensemble j'ai affiché:
- Les phases de boot.
- L'utilisation du disque dur: sélection dans la barre de titre du graphique de "Utilization by Process, Path Name, Stack".
On voit:
- Dans computation à gauche: Le CPU ne fait rien, il n'est pas le facteur limitant.
- Dans storage à gauche: Le disque dur travaille beaucoup.
- L'analyse juge que la phase post-boot (après login) s'achève 48 secondes après le démarrage. En vérité je suis maître du bureau au bout de 35 secondes (flèches vertes).
- De nombreux processus se lancent néanmoins après cette phase :p On retrouve le service de mise à jour de FlashPlayer sous les flèches rouges, un driver Intel sous la flèche verte (même couleur désolé), quelques services à début différé en rose.
Graphique 2 : post-boot
En suivant le processus explorer.exe (on voit son nom dans la liste en haut à gauche), je remarque avec surprise que GTA se précharge juste après le login (le temps qu'il requiert est dans la zone entourée en bleu sur le graphique)... En fait, tous les logiciels souvent utilisés, et présents dans le menu démarrer sont appelés. Plus vous en avez, plus explorer est long à charger. Pré-charger des programmes qui ne vous servent pas est une optimisation selon Microsoft. Bon à savoir...
Graphique 3 : pré initialisation de session
Pas grand chose à faire, le disque dur fonctionne à fond et ce ne sont que des processus Microsoft indispensables qui en sont responsables => pas plus d'optimisations de ce coté. Notons que cette étape requiert 13 secondes.
Ressources complémentaires
- Tuto sur WPA.
- Profitez de l'option FastBoot.
- Visualisez et désactivez simplement les services avec les très bons outils de sysinternals (racheté par Microsoft) ! (cf autoruns.exe).
Sous Linux/GNU avec Systemd
(Donc pas sur Ubuntu 14 LTS, mais à partir de la version 15 et sur la version 16 LTS d'avril prochain. Présent à partir de Debian 7.0 Jessie également. Pour les autres distris de nerds je ne suis pas au courant :p).
Je cite:
Systemd est une alternative au démon init de System V spécifiquement conçu pour le noyau Linux. Il a pour but d'offrir un meilleur cadre pour la gestion des dépendances entre services, de permettre le chargement en parallèle des services au démarrage, et de réduire les appels aux scripts shell
Voir:
En dépit de la controverse et de la nécessité pour les admins de revoir leurs scripts, Systemd apporte des nouveautés comme la possibilité d'analyser facilement les étapes de boot.
Nous ne sommes pas sous windows, pas de paquet à installer mais 4 commandes à connaitre (juste 1 seule en fait, les autres sont des options):
Commandes | Effet |
---|---|
systemd-analyze | Affiche la durée du précédent boot. |
systemd-analyze blame | Affiche le temps nécessaire au chargement de chaque service. |
systemd-analyze plot > plot.svg | Produit un graphique au format svg avec les durées et l'ordre de chargement des services. |
systemd-analyze critical-chain | Affiche les services critiques qui ralentissent le système (ce que Windows ne fait pas et pourtant c'est le plus important). |
Les deux premières commandes
Le système met 24 secondes avant le chargement de l'interface graphique. Le service responsable d'un ralentissement de 4 secondes est le réseau. Ceci est normal; si l'initialisation ne se faisait pas là elle devrait se faire après le login.
Le graphique
Dans le zoom on voit que plusieurs services se lancent en parallèle et que le plus lent (le réseau) est à l'origine d'un ralentissement/blocage d'environ 2 secondes, entre la fin des autres services et le lancement de l'interface graphique.
Sous Linux/GNU avec Bootchart 2
Bootchart2 permet aux développeurs de voir à quelle vitesse une machine démarre et de repérer les goulots d'étranglements responsables de ralentissements. Alors que Systemd ne permet de tracer que les services jusqu'au login, Bootchart2 peut tracer l'activité du système 120 secondes (par défaut) après le login. Par ailleurs, Bootchart2 enregistre aussi bien l'activité du CPU que celle du support de stockage (I/O).
Installation
Le dépôt et la doc du projet sont sur GitHub, mais les paquets sont normalement inclus dans les dépôts de votre distribution.
sudo apt-get install bootchart2 pybootchartgui
Configuration
Le lancement nécessite une modification des options passées au noyau lors du boot.
N'ayez pas peur, il suffit d'éditer le fichier '/etc/default/grub', repérez ensuite la ligne 'GRUB_CMDLINE_LINUX_DEFAULT' et ajoutez-y:
GRUB_CMDLINE_LINUX_DEFAULT="COMMANDES_PREEXISTANTES initcall_debug printk.time=y init=/sbin/bootchartd"
Si vous avez déjà un paramètre passé au noyau via 'init=XXX', modifiez en conséquence le fichier de paramètres '/etc/bootchartd.conf' ou utilisez cette syntaxe (exemple avec e4rat):
init=/sbin/bootchartd bootchart_init=/sbin/e4rat-preload
Régénérez ensuite la configuration de grub:
update-grub
PS: N'oubliez pas de supprimer ces modifications (et de refaire update-grub) après les tests. Bootchart n'est pas destiné à être lancé à chaque démarrage.
Graphiques
2 types de graphiques peuvent être générés:
Interactif:
pybootchartgui -i
Statique (image png ou svg):
pybootchartgui -f png
pybootchartgui -f svg
Ce qui donne le graphique suivant (clic pour agrandir):
Conclusion
Le chargement d'un Linux/GNU ou d'un Windows optimisé nécessite une attente similaire. Le facteur limitant étant le disque dur, il serait intéressant de comparer les performances sur un SSD puisque dans ce cas là on mesurerait seulement la puissance de calcul requise.
Le gestionnaire d'affichage que j'utilise (KDM pour KDE) n'est pas le plus rapide. C'est un choix, KDE me convient. Après les ~25 secondes de boot j'ai encore 15 secondes pour charger le bureau. En choisissant GNOME, je suppose que 10 secondes suffiraient.
Notons qu’après ce chargement, il n'y a pas de services à début différé comme sous Windows...
Dans tous les cas :
- Si votre machine met plus de 50 secondes à charger c'est que vous faites n'importe quoi avec, et qu'il vaut mieux tout réinstaller.
- Si votre machine met moins de 15 secondes c'est que vous utilisez un SSD, ou que vous ne redémarrez pas complètement (hybernation/redémarrage hybride), ou que vous mentez.
PS: Certains constructeurs, (Apple pour ne pas le nommer dans une belle prétérition), mettent en avant le démarrage accéléré de leur machine. En fait il s'agit d'une mise en veille profonde avec écriture de la RAM sur le disque (La stabilité des systèmes Unix permet ce genre de chose ; en effet, l'uptime peut aisément atteindre plusieurs centaines de jours). Le disque utilisé est souvent un SSD, et comme chacun sait, écrire massivement sur un SSD ne réduit pas du tout sa durée de vie...
À bon entendeur, salut !
Avec tout ceci on peut commencer à comparer pour savoir qui a la plus petite. Latence dans le démarrage...
À lire sur le même sujet: un * Optimiser le boot et réduire sa durée de 40%: Tuto. sur l'accélération du démarrage par mise en cache préalable des fichiers de boot. Soit une réduction de la durée de boot allant jusqu'à 40%.