22
0
Fork 0

relecture/ajout

This commit is contained in:
Gregory Colpart 2017-11-25 16:02:05 +01:00
parent 70fba1c7e7
commit c89af0323a
1 changed files with 108 additions and 16 deletions

View File

@ -4,14 +4,13 @@ title: Howto Htop
...
[Htop](http://hisham.hm/htop/) est un gestionnaire de processus et un visualiseur de performance (CPU, mémoire et disque). Il se pilote au clavier et éventuellement à la souris.
La première chose à faire pour appréhender l'outil est d'appuyer sur F1 pour avoir l'aide des codes couleurs et les raccourcis claviers.
[Htop](http://hisham.hm/htop/) est outil permettant de visualiser des processus et leurs caractéristiques (PID, CPU, mémoire, I/O…) de façon interactive sur un système Linux/Unix. Il est écrit en C avec la bibliothèque _ncurses_. Htop s'inspire de `top`, outil historique, en apportant plusieurs améliorations (couleurs, scroll vertical, interactions avec le souris, etc.).
## Installation
~~~
# apt install htop
# apt install htop lsof strace
$ htop -v
htop 2.0.2 - (C) 2004-2016 Hisham Muhammad
@ -26,37 +25,130 @@ $ htop
Options utiles :
* `-u www-data` : lister uniquement les processus d'un utilisateur
* `-d 10` : changer le délai de rafraichissement en dixième de secondes (par défaut 20)
* `-u www-data` : afficher uniquement les processus d'un utilisateur
* `-d 10` : changer le délai de rafraichissement en dixièmes de seconde (par défaut 20)
* `-p 21,42` : afficher uniquement les processus avec le PID 21 et 42
* `-s PERCENT_CPU` : trier les processus par PERCENT_CPU, PERCENT_MEM, IO_RATE… (liste complète avec `htop --sort-key help`)
* `-C` : forcer l'affichage en monochrome
![*Exemple d'une sortie htop sur un poste utilisateur.*](/htop.png)
En appyant sur F1 on peut voir les options disponibles :
![*L'aide de Htop.*](/htop_F1.png)
## Voir les I/O
Htop depuis la version fourni dans squeeze dispose de sondes permettant d'identifier les écriture, lecture et performance sur les I/O.
## Configuration
On peut l'activer via le menu :
On peut configurer Htop en appuyant sur F2.
F2-->Columns-->Available Columns --> Ajouter les IO_* (F5, attention ils sont tout en bas de la liste !)
On peut notamment :
* choisir le thème de couleur (`color_scheme`)
* choisir les métriques à afficher en haut
* choisir les colonnes à afficher et leur ordre (`fields`)
* voir ou non les processus kernel (`hide_kernel_threads`)
* voir ou le chemin complet des processus (`show_program_path`)
Les choix sont persistants, ils sont conservés dans le fichier `~/.config/htop/htoprc`.
Sinon voici un .htoprc qui contient les colonnes avec les sondes d'I/O
Voici un exemple de fichier `~/.config/htop/htoprc` :
~~~
fields=0 48 17 18 38 39 40 2 46 47 62 63 64 49 1
fields=109 110 111 0 48 17 18 38 39 40 2 46 47 49 1
sort_key=46
sort_direction=1
hide_threads=0
hide_kernel_threads=0
hide_userland_threads=0
shadow_other_users=0
show_thread_names=0
show_program_path=1
highlight_base_name=0
highlight_megabytes=1
highlight_threads=1
tree_view=1
header_margin=1
detailed_cpu_time=1
cpu_count_from_zero=1
update_process_names=0
account_guest_in_cpu_meter=0
color_scheme=5
delay=15
left_meters=CPU AllCPUs
left_meter_modes=1 1
right_meters=Hostname Clock Tasks LoadAverage Uptime Memory Swap
right_meter_modes=2 2 2 2 2 1 1
~~~
62 63 64 concernent les colonnes pour les sondes d'I/O.
## Astuces
## Exploration avancée
### Voir les I/O disque
Cet article explique en détail toutes les fonctionnalités de Htop et les outils sur lesquels il se base pour obtenir les informations : <https://peteris.rocks/blog/htop/>
Htop permet d'afficher les valeurs de lecture, écriture et performance sur les I/O disque depuis Debian 6.
Pour activer ces colonnes :
* F2
* Columns
* Available Columns
* Ajouter les IO_* avec F5 (en base de la liste)
### Filtre de processus
Avec F4, on peut entrer le nom d'un processus (ou une partie du nom) et afficher uniquement les processus correspondant.
### Informations sur un processus
On peut selectionner un processus avec les flèches haut/bas ou la souris.
On peut alors avoir les actions suivantes sur ce processus :
* `e` : lister ses variables d'environnement
* `l` : lister ses fichiers ouverts (avec `lsof`)
* `s` : lister ses appels système (avec `strace`)
* `i` : ajuste sa priorité I/O (avec `ionice`)
* `F8` : diminue sa priorité (incrémente sa valeur `nice`)
* `F7` : augmente sa priorité (décrémente sa valeur `nice`, réservé à _root_)
* `F9` : envoie un signal KILL (par défaut SIGTERM)
### Kill de plusieurs processus
On peut marquer des processus avec la touche `Espace` (ou la touche `c` pour les processus enfant),
puis lancer un signal KILL à tous les processus marqués en faisant F9
On peut « démarquer » tous les processus avec `U`.
## Plomberie
<https://peteris.rocks/blog/htop/>
Où/comment Htop va chercher ses informations ? Que veulent dire ses informations ?
Pēteris Ņikiforovs explique tout cela en détails : <https://peteris.rocks/blog/htop/>
Une traduction partielle se trouve dans une série d'articles sur <https://carlchenet.com/category/htop-explique/>
## FAQ
### Ma mémoire est remplie en permanence, est-ce grave ?
La barre de mémoire de Htop se décompose en : mémoire utilisée (vert) + buffers (bleu) + mémoire cache (jaune).
Pour vulgariser, la mémoire cache peut être ignorée car Linux ne libère pas tout seul cette mémoire.
Vous pouvez forcer la libération de la mémoire cache avec `echo 3 > /proc/sys/vm/drop_caches` mais c'est déconseillé en général.
### Ma Swap est remplie en permanence, est-ce grave ?
Si la Swap est utilisée, cela signifie que votre système a eu besoin dans le passé de s'en servir, par exemple car il manquait de mémoire.
Cela ne signifie par forcément que la Swap est en cours d'utilisation.
Si vous avez de la mémoire libre, vous pouvez forcer une libération de votre Swap via `swapoff -a && swapon -a`.
### Que veulent dire les colonnes _VIRT_, _RES_ et _SHR_ ?
VIR est la mémoire virtuelle d'un processus, elle inclut notamment les fichiers mappés en mémoire, la mémoire de la carte vidéo et les allocations mémoire (fonctions `malloc()`en C) qui ne sont pas forcément utilisées en pratique.
RES est la mémoire résidente d'un processus, c'est un bon indicateur de la mémoire réellement utilisée même si une partie de cette mémoire peut être partagée avec d'autres processus. Il faut noter aussi qu'en cas de fork d'un processus, la mémoire résidente sera identique pour le second processmais pas réellement utilisée car Linux utilise une méthode de copy-on-write .
SHR est la mémoire partagée d'un processus, comme par exemple les bibliothèques partagées.
En résumé, la mémoire réellement utilisée par un processus au moment présent se situe entre _RES_-_SHR_ et _VIRT_, et l'on peut considérer que _RES_ est une bonne approximation.
## Filtrer un processus par nom
Appuyez sur la touche F4 et tapez le nom du processus qui vous intéresse.