Le 14 septembre 2017, nous avons publié une version actualisée de notre Politique de confidentialité. En utilisant video2brain.com vous vous engagez à respecter ces documents mis à jour. Veuillez donc prendre quelques minutes pour les consulter.

Linux : L'architecture système

Suivre l'exécution d'un processus

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Vous allez apprendre à utiliser le programme time pour suivre les performances de l'exécution d'un processus.
08:48

Transcription

Puisque nous avons vu quelques moyens de surveiller l'activité du système, et bien, utilisons-les dans une petite démo presque réelle. C'est-à-dire... J'ai essayé de trouver un fichier assez volumineux : l'iso d'installation d'ubuntu serveur. Ça fait 660 mégas. C'est pas énorme, énorme. Mais si on lance une compression pour faire un tar gz, par exemple, dessus, et bien, ça devrait durer quand même quelques secondes. Et on pourrait voir l'activité. Donc... J'ai pris une commande qui est ici. Je fais un tar dans ubuntu.tgz de mon iso. Donc, en fait, je génère avec tar un tar... Je crée, je veux qu'il soit compressé en gz. OK. Et puis, je rajoute le petit " et " commercial à la fin bien sûr pour dire que... Je vais déconnecter le process de la session. Je vais pouvoir continuer à travailler interactivement pendant que ça s'exécute en tâche de fond. Et puis, ensuite, je vais aller vite, et je vais faire... Donc, je lance ceci, et je vais faire un vm. Voilà. Un VMSTAT pour voir, avec w et 1... pour voir à peu près où j'en suis. Donc, ce qu'on peut voir, c'est qu'on a... finalement, une augmentation du cache. Donc, le fichier est en train de rentrer dans le cache pour pouvoir être compressé. On a des blocs en output. On est en train d'écrire sur le disque. Donc, ça, c'est assez clair. Le système continue à faire des interruptions. Et puis, on a une augmentation de switch de contexte Donc, on a dû sortir du processeur, de temps en temps, l'activité. Et puis, on avait de l'activité dans le processeur. On va s'arrêter là parce que, là, manifestement, c'est fini. Et on voit qu'on a 100% d'idle ici depuis quelques temps. Et puis, quand j'ai arrêté, j'ai bien vu le retour dans mon output que la commande était bien finie. Donc, il est clair qu'elle s'est arrêtée approximativement ici parce que, là, il y avait de l'activité CPU. Donc, de l'activité utilisateur, principalement, Dans l'user space, on le voit. Donc, on a quand même eu 96, 98% de CPU. J'ai qu'un seul processeur ici. Donc, c'est pas terrible, terrible comme démo. Mais on voit qu'il y a quand même eu une activité CPU intense. On voit qu'il y a eu de l'output sur les io. Donc, vous voyez que VMSTAT est plutôt pas mal pour suivre, comme ça un peu, à la louche, l'activité de notre système. J'ai une autre façon, d'ailleurs, de faire ça. Si on enlève tout ça, et que je reprends ma commande... J'ai une autre façon de faire ça avec une commande qui s'appelle time. Vous tapez simplement time, et puis, la commande qui suit. Time va vous montrer un petit résumé, ensuite, de ce qui s'est passé. Alors, je vous le fais d'abord une première fois, et puis, je vais peut-être interrompre l'enregistrement parce que... Le temps que la compression se fasse. Faut peu-être, d'ailleurs, que je supprime... le fichier lui-même de façon à ce qu'il puisse s'écrire à nouveau. Voilà. Et puis, je reprends donc ma commande. J'interromps peut-être. On va voir juste le résultat. C'est pas la peine d'attendre que ça se termine. OK. C'est parti. OK. Je reprends la vidéo juste après que ça se soit terminé. Et vous voyez, on a le temps réel en secondes. Donc, ça a pris manifestement 30 secondes. Le temps utilisateur, et puis, le temps système. Ça vous donne quelques informations. Là, on a du temps, mais on peut avoir un petit peu plus d'informations. Mais méfiez-vous de la commande time parce que la commande time peut être une commande interne à l'OS. Ce qui est le cas ici, dans mon ubuntu, dans mon Linux. C'est-à-dire que time, c'est une commande interne. Donc, c'est une commande qui fait déjà partie de bash. Mais c'est aussi une commande externe qui a des options et qui a plus d'informations. Si je vais par exemple time -V, pour avoir la version de time, on va me dire : je connais pas la commande. C'est bête, non ? Time s'attend à ce qu'on ait immédiatement après une commande à exécuter. Pourtant, le paramètre moins v majuscule est bien un paramètre. Si je regarde dans la page de manuel, je vois que je peux faire un v majuscule ici. Donc, qu'est-ce qui se passe ? Ben, il se passe que vous devez explicitement utiliser la commande externe. Et elle se trouve dans usr/bin/time. Et si vous utilisez usr/bin/time, donc vous pointez sur la vraie commande externe, c'est-à-dire un exécutable, hein, qui n'est pas interne à bash. Et bien, voilà, ça marche. Et on a gnut 1.7. Donc, faites comme ça. On va reprendre ça. Ici, j'aurais pu utiliser les flèches, d'ailleurs, pour revenir. Et je vais faire un usr/bin/time. Je vais utiliser l'option v minuscule cette fois-ci, pas le v majuscule. C'était la version. V minuscule, c'est pour " verbose ". Donc, on veut quelque chose d'un peu plus verbeux, d'un peu plus détaillé. Et puis, ben, même raisonnement qu'avant. Je lance la commande. Et puis, je vais faire une pause et on verra le résultat. Donc, voilà, c'est terminé. Vous voyez qu'il y a beaucoup d'informations tout à coup. Donc, j'ai utilisé -v pour être verbeux. Et ça, c'est très bien parce qu'on va avoir des informations qui sont sur leur lignes respectives. Si vous ne faites pas le -v, vous allez avoir une sorte de gros pavé assez illisible. Donc, utilisez-le quand même systématiquement avec le -v minuscule pour voir quelque chose de lisible. Et verbose est bien ici parce qu'il nous donne quand même des informations. Par exemple, il nous dit major ou minor page faults. Et il nous dit à quoi ça correspond à peu près. Donc, ben, c'est simple. Le user time, combien de temps ça a pris, le system time, ça, on connaît déjà. Le pourcentage de CPU que... a eu ce job. Le temps elapsed, donc le temps qui a réellement tourné sur l'horloge. C'est le temps réel. Il peut y avoir une différence si on a du multiprocessing, Le temps réel, c'est le temps total d'exécution pour moi, pour l'utilisateur. Et puis, ensuite, on a un user time et un system time qui est calculé sur le CPU. On a la mémoire... Le set size en mémoire qui était maximum, la moyenne... Donc, s'il y a eu des fluctuations de mémoire pendant l'exécution du programme Ce qui, là, n'est pas le cas puisque ça a été quand même rapide. Puis, on a travaillé intensément. Donc, il n'y a pas eu de fluctuation de mémoire par le kernel. On a donc des page fault. Vous vous souvenez ? Je vous en ai parlé. Un page fault, c'est quand l'application demande une page qui est en mémoire. C'est-à-dire que l'application a une page en mémoire, a de l'information dans la mémoire vive. Mais le kernel... Et bien, lui, le kernel, ne l'a pas disponible tout de suite parce que, par exemple, il l'a swappée. S'il l'a swappée, et que cette mémoire n'est plus dans la mémoire vive, mais dans la partition de swap, on a un major page faults. C'est-à-dire que... on trouve pas la mémoire. Le kernel sait qu'elle est sur le swap, il doit aller la chercher, faire un io et la récupérer. Le minor page faults... Alors, c'est un truc assez marrant, c'est que... finalement, il y a des parties de mémoire qui peuvent être partagées par différents programmes. Et en fait, l'adresse qui est demandée par l'application n'est pas vraiment la bonne. Et donc, le kernel doit retrouver l'adresse de la page qui est vraiment en mémoire vive et redonner... Et donc, un minor page faults, ça ne fait pas d'io. Donc, c'est pas très, très grave, comme ça. Y a pas de lecture sur le swap. On a des switch de contexte. On a changé le contexte du processeur. Donc, on a enlevé ou remis le process sur un processeur. C'est le scheduler qui s'occupe de ça. Puis, on a du volontaire ou de l'involontaire. Donc, ça veut dire que c'est le process lui-même qui a dit : bon, ben, je m'enlève du processeur peut-être parce que je dois attendre sur du disque. Et puis, là, c'est plus une activité qui vient du fait qu'on est sur un système d'exploitation préemptif. C'est le scheduler qui a enlevé le contexte, et ce n'était pas sur la demande du processus. Beaucoup d'informations, en fait. Vous avez ici file system inputs, file system outputs. Donc, vous voyez qu'il n'y a pas eu de lecture, mais il y a eu beaucoup d'écriture sur le disque. Et voilà, c'est déjà beaucoup de choses, hein. Vous pouvez donc suivre assez précisément l'exécution de vos applications ou de certains process avec les outils qu'on vient de voir dans cette vidéo.

Linux : L'architecture système

Prenez en main les principes généraux de l’architecture système de Linux. Comprenez le fonctionnement du noyau (kernel), de la gestion de la mémoire, des processus, etc.

2h01 (20 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Thématiques :
IT
Systèmes d'exploitation
Spécial abonnés
Date de parution :15 sept. 2016

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !