expert:analyser_usage_memoire_vive
no way to compare when less than two revisions
Différences
Ci-dessous, les différences entre deux révisions de la page.
— | expert:analyser_usage_memoire_vive [2018/11/17 12:53] (Version actuelle) – créée - modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | =====Analyser l' | ||
+ | Si vous êtes un utilisateur habituel de systèmes Linux vous avez sans doute le réflexe d' | ||
+ | |||
+ | ====Pourquoi surveiller l' | ||
+ | |||
+ | La mémoire vive est abordable et souvent présente en quantité confortable, | ||
+ | Une autre application est la comparaison de plusieurs programmes accomplissant des tâches équivalentes, | ||
+ | |||
+ | Il existe de nombreuses façons d' | ||
+ | |||
+ | Le logiciel de surveillance du système [[kde: | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | ====Lire les informations à la source : /proc/==== | ||
+ | |||
+ | Parmi les répertoires présents sur votre système vous n'avez peut être jamais accordé une grande attention à /proc, il s'agit d'une système de fichiers virtuels qui sont des interfaces avec le noyau Linux, c'est ici que de nombreux utilitaires comme " | ||
+ | Pour notre sujet à savoir l' | ||
+ | Voici un aperçu très abrégé du contenu de /proc : | ||
+ | |||
+ | < | ||
+ | [...] | ||
+ | dr-xr-xr-x | ||
+ | dr-xr-xr-x | ||
+ | dr-xr-xr-x | ||
+ | dr-xr-xr-x | ||
+ | dr-xr-xr-x | ||
+ | [...] | ||
+ | -r--r--r-- | ||
+ | -r--r--r-- | ||
+ | -r-------- | ||
+ | -r--r--r-- | ||
+ | </ | ||
+ | |||
+ | Les valeurs numériques qui terminent certaines lignes sont des PID de processus en cours d' | ||
+ | |||
+ | < | ||
+ | total 0 | ||
+ | dr-xr-xr-x | ||
+ | -r-------- | ||
+ | -r--r--r-- | ||
+ | --w------- | ||
+ | -r--r--r-- | ||
+ | -rw-r--r-- | ||
+ | -rw-r--r-- | ||
+ | -r--r--r-- | ||
+ | lrwxrwxrwx | ||
+ | -r-------- | ||
+ | lrwxrwxrwx | ||
+ | dr-x------ | ||
+ | dr-x------ | ||
+ | -r--r--r-- | ||
+ | -rw-r--r-- | ||
+ | -r--r--r-- | ||
+ | -rw------- | ||
+ | -r--r--r-- | ||
+ | -r--r--r-- | ||
+ | -r-------- | ||
+ | dr-xr-xr-x | ||
+ | -r--r--r-- | ||
+ | -rw-r--r-- | ||
+ | -r--r--r-- | ||
+ | -rw-r--r-- | ||
+ | -r-------- | ||
+ | -r-------- | ||
+ | lrwxrwxrwx | ||
+ | -r--r--r-- | ||
+ | -r--r--r-- | ||
+ | -r--r--r-- | ||
+ | -r--r--r-- | ||
+ | -r--r--r-- | ||
+ | -r-------- | ||
+ | dr-xr-xr-x 12 tux tux 0 1 déc. 11:01 task | ||
+ | -r--r--r-- | ||
+ | </ | ||
+ | |||
+ | Tous ces fichiers sont des interfaces vers des informations accessibles dans le noyau, ici ce qui nous intéresse c'est " | ||
+ | |||
+ | < | ||
+ | [...] | ||
+ | 00400000-00414000 r-xp 00000000 09:00 1048314 | ||
+ | 00614000-00615000 rw-p 00014000 09:00 1048314 | ||
+ | 7feab887d000-7feab923a000 r-xp 00000000 09:00 406303 | ||
+ | 7feab923a000-7feab943a000 ---p 009bd000 09:00 406303 | ||
+ | 7feab943a000-7feab9495000 rw-p 009bd000 09:00 406303 | ||
+ | 7feabb0d8000-7feabb0fd000 r-xp 00000000 09:00 165473 | ||
+ | 7feabb0fd000-7feabb2fc000 ---p 00025000 09:00 165473 | ||
+ | 7feabb2fc000-7feabb300000 rw-p 00024000 09:00 165473 | ||
+ | 7feac7abd000-7feac7aca000 r-xp 00000000 09:00 824811 | ||
+ | 7feac7aca000-7feac7bc9000 ---p 0000d000 09:00 824811 | ||
+ | 7feac7bc9000-7feac7bcc000 rw-p 0000c000 09:00 824811 | ||
+ | 7feacc69b000-7feacc800000 r--p 00000000 09:02 25299858 | ||
+ | 7feacca0e000-7feaccc00000 r--p 00000000 09:00 139154 | ||
+ | 7feace19c000-7feace39c000 r--p 00000000 09:00 799404 | ||
+ | 7feace39c000-7feace500000 r--p 00000000 09:02 25690287 | ||
+ | [...]</ | ||
+ | |||
+ | Les plus geek d' | ||
+ | |||
+ | < | ||
+ | [...] | ||
+ | 7feab887d000-7feab923a000 r-xp 00000000 09:00 406303 | ||
+ | Size: 9972 kB | ||
+ | Rss: 888 kB | ||
+ | Pss: 444 kB | ||
+ | Shared_Clean: | ||
+ | Shared_Dirty: | ||
+ | Private_Clean: | ||
+ | Private_Dirty: | ||
+ | Referenced: | ||
+ | Swap: 0 kB | ||
+ | KernelPageSize: | ||
+ | MMUPageSize: | ||
+ | 7feab923a000-7feab943a000 ---p 009bd000 09:00 406303 | ||
+ | Size: 2048 kB | ||
+ | Rss: 0 kB | ||
+ | Pss: 0 kB | ||
+ | Shared_Clean: | ||
+ | Shared_Dirty: | ||
+ | Private_Clean: | ||
+ | Private_Dirty: | ||
+ | Referenced: | ||
+ | Swap: 0 kB | ||
+ | KernelPageSize: | ||
+ | MMUPageSize: | ||
+ | </ | ||
+ | |||
+ | Ici on a relayé le résultat vers le pager " | ||
+ | |||
+ | Vous me direz " | ||
+ | Pour un cours de rattrapage on utilisera : | ||
+ | |||
+ | < | ||
+ | 5086 firefox-bin | ||
+ | </ | ||
+ | |||
+ | Maintenant que se passe-t-il si **pgrep** renvoi plusieurs processus, un exemple avec le navigateur Internet [[internet: | ||
+ | |||
+ | < | ||
+ | 11435 chromium-browser | ||
+ | 11437 chromium-browser | ||
+ | 11439 chromium-browser | ||
+ | 11457 chromium-browser | ||
+ | 11461 chromium-browser | ||
+ | 11463 chromium-browser | ||
+ | 11467 chromium-browser | ||
+ | 11471 chromium-browser | ||
+ | 11477 chromium-browser | ||
+ | 11480 chromium-browser | ||
+ | 11483 chromium-browser | ||
+ | 11486 chromium-browser | ||
+ | 11491 chromium-browser | ||
+ | 11502 chromium-browser | ||
+ | 11526 chromium-browser | ||
+ | 11529 chromium-browser | ||
+ | 11536 chromium-browser | ||
+ | 11541 chromium-browser | ||
+ | 11584 chromium-browser | ||
+ | 11590 chromium-browser | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | |||
+ | init(1)-+-Xprt(3154) | ||
+ | |-acpid(2463) | ||
+ | |-chromium-browse(10964)-+-chromium-browse(10983)---{chromium-brows}(10985) | ||
+ | | |-chromium-browse(10986)---{chromium-brows}(10988) | ||
+ | | |-chromium-browse(10989)---{chromium-brows}(10992) | ||
+ | | |-chromium-browse(10993)---{chromium-brows}(10995) | ||
+ | | |-chromium-browse(10998)---{chromium-brows}(11004) | ||
+ | | |-chromium-browse(11006)---{chromium-brows}(11009) | ||
+ | | |-chromium-browse(11010)---{chromium-brows}(11012) | ||
+ | | |-chromium-browse(11013)---{chromium-brows}(11015) | ||
+ | | |-chromium-browse(11021)---{chromium-brows}(11023) | ||
+ | | |-chromium-browse(11027)---{chromium-brows}(11029) | ||
+ | | |-chromium-browse(11046)---{chromium-brows}(11048) | ||
+ | | |-chromium-browse(11052)---{chromium-brows}(11058) | ||
+ | | `-chromium-browse(11062)---{chromium-brows}(11064) | ||
+ | [...] | ||
+ | |-kdeinit4(3482)-+-chromium-browse(10960)-+-chromium-browse(10962) | ||
+ | | | |-chromium-browse(11026)-+-{chromium-brows}(11030) | ||
+ | | | | |-{chromium-brows}(11036) | ||
+ | | | | |-{chromium-brows}(11037) | ||
+ | | | | |-{chromium-brows}(11038) | ||
+ | | | | |-{chromium-brows}(11039) | ||
+ | | | | |-{chromium-brows}(11040) | ||
+ | | | | |-{chromium-brows}(11041) | ||
+ | | | | |-{chromium-brows}(11042) | ||
+ | | | | |-{chromium-brows}(11043) | ||
+ | | | | `-{chromium-brows}(11049) | ||
+ | | | |-chromium-browse(11077)---{chromium-brows}(11080) | ||
+ | | | |-{chromium-brows}(10969) | ||
+ | | | |-{chromium-brows}(10970) | ||
+ | | | |-{chromium-brows}(10971) | ||
+ | | | |-{chromium-brows}(10972) | ||
+ | | | |-{chromium-brows}(10973) | ||
+ | | | |-{chromium-brows}(10974) | ||
+ | | | |-{chromium-brows}(10975) | ||
+ | | | |-{chromium-brows}(10976) | ||
+ | | | |-{chromium-brows}(10978) | ||
+ | | | |-{chromium-brows}(10979) | ||
+ | | | |-{chromium-brows}(10996) | ||
+ | | | |-{chromium-brows}(10997) | ||
+ | | | |-{chromium-brows}(11016) | ||
+ | | | |-{chromium-brows}(11050) | ||
+ | | | |-{chromium-brows}(11051) | ||
+ | | | `-{chromium-brows}(11066) | ||
+ | </ | ||
+ | |||
+ | Là, ça devient plus compliqué. Une solution peut être d' | ||
+ | |||
+ | < | ||
+ | |||
+ | Ça fonctionne, mais la somme d' | ||
+ | |||
+ | < | ||
+ | |||
+ | Heureusement pour mettre tout ça en forme il existe des outils plus adaptés. | ||
+ | |||
+ | ====memstat==== | ||
+ | |||
+ | Le fonctionnement de **memstat** n'a rien de compliqué, et il ne fait rien d' | ||
+ | |||
+ | < | ||
+ | 5113 firefox-bin | ||
+ | |||
+ | $ memstat -wp 5113 | ||
+ | | ||
+ | 384k( 384k): / | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 4k( 4k): / | ||
+ | | ||
+ | | ||
+ | | ||
+ | [...] | ||
+ | | ||
+ | 620k( 0k): / | ||
+ | 572k( 0k): / | ||
+ | [...] | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 12384k( | ||
+ | 388k( 0k): / | ||
+ | | ||
+ | | ||
+ | [...] | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 484k( 0k): / | ||
+ | | ||
+ | | ||
+ | | ||
+ | -------- | ||
+ | | ||
+ | |||
+ | On combine maintenant une bonne lisibilité, | ||
+ | |||
+ | On peut organiser le résultat par quantité de mémoire utilisée décroissante en couplant avec " | ||
+ | |||
+ | < | ||
+ | 32476 chromium-browser | ||
+ | 32478 chromium-browser | ||
+ | 32480 chromium-browser | ||
+ | 32499 chromium-browser | ||
+ | 32502 chromium-browser | ||
+ | [...] | ||
+ | |||
+ | $ memstat -wp 32476 | sort -tk -k1 -nr | ||
+ | |||
+ | 533720k ( 129620k) | ||
+ | 135160k: PID 32476 (/ | ||
+ | 41312k( | ||
+ | 29188k( | ||
+ | 16640k( | ||
+ | 13568k( | ||
+ | 12384k( | ||
+ | 6268k( | ||
+ | 5444k( | ||
+ | 3920k( | ||
+ | 3440k( | ||
+ | 3388k( | ||
+ | 3376k( | ||
+ | 3308k( | ||
+ | 2176k( | ||
+ | 2164k( | ||
+ | 2148k( | ||
+ | [...] | ||
+ | 1408k( | ||
+ | 1084k( | ||
+ | 1032k( | ||
+ | 516k( 516k): / | ||
+ | 408k( 408k): / | ||
+ | 120k( 120k): / | ||
+ | 8k( 8k): / | ||
+ | 4k( 4k): / | ||
+ | -------- | ||
+ | [...]</ | ||
+ | |||
+ | " | ||
+ | |||
+ | :!: Attention au comportement de memstat, si plusieurs PID sont renvoyés par " | ||
+ | |||
+ | ====smem==== | ||
+ | |||
+ | Pour analyser rapidement l' | ||
+ | |||
+ | < | ||
+ | |||
+ | PID User | ||
+ | 32478 1000 / | ||
+ | 32560 1000 / | ||
+ | 32586 1000 / | ||
+ | 32476 1000 / | ||
+ | ------------------------------------------------------------------------------- | ||
+ | 97 1 | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | |||
+ | PID User | ||
+ | 32754 1000 / | ||
+ | ------------------------------------------------------------------------------- | ||
+ | 79 1 | ||
+ | </ | ||
+ | |||
+ | Les habitués de [[commande: | ||
+ | * " | ||
+ | * " | ||
+ | * " | ||
+ | * Enfin " | ||
+ | Si vous couplez " | ||
+ | |||
+ | < | ||
+ | \\ | ||
+ | \\ | ||
+ | |||
+ | Parmi les autres options intéressantes " | ||
+ | |||
+ | < | ||
+ | | ||
+ | 999.8M | ||
+ | 460.4M | ||
+ | 452.0M | ||
+ | 448.2M | ||
+ | 447.8M | ||
+ | 395.2M | ||
+ | ------------------------------------ | ||
+ | 3.1G | ||
+ | </ | ||
+ | |||
+ | Parmi les colonnes disponibles les plus intéressantes sont : | ||
+ | |||
+ | * **pid** | ||
+ | * **command** | ||
+ | * **user** | ||
+ | * **pss** | ||
+ | * **rss** | ||
+ | * **uss** | ||
+ | * **vss** | ||
+ | * **swap** | ||
+ | |||
+ | L' | ||
+ | |||
+ | |||
+ | < | ||
+ | |||
+ | Map | ||
+ | < | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | [...] | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | -------------------------------------------------------------------- | ||
+ | 190 157.1M | ||
+ | </ | ||
+ | |||
+ | Si vous vous demandez qui est cet " | ||
+ | |||
+ | **smem sait également produire des diagrammes** pour rendre compte de l' | ||
+ | |||
+ | < | ||
+ | |||
+ | Avec l' | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | ====Liens==== | ||
+ | * [[http:// | ||
+ | |||
+ | * [[http:// | ||
+ | |||
+ | * [[http:// | ||
+ | |||
+ | * [[https:// | ||
+ | |||
+ | ---------------- | ||
+ | |||
+ | [[expert: |
expert/analyser_usage_memoire_vive.txt · Dernière modification : 2018/11/17 12:53 de 127.0.0.1