Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#26 Le 07/03/2015, à 10:02

Compte supprimé

Re : Nombre de processus

Salut, très intéressant tout ce coté du noyau.

                    CTKArch affiche 77 tasks avec top, mais htop affiche 35 tasks + 65 thr.
Ubuntu studio 12.04 affiche 162 tasks avec top, mais htop affiche 99 tasks + 189 thr.

ls -d /proc/[0-9]* | wc -w renvoie 161.

ls -d /proc/*
/proc/1     /proc/1108	/proc/1680  /proc/1895	/proc/1956  /proc/20	/proc/22    /proc/259	/proc/2828  /proc/46   /proc/566  /proc/863	   /proc/devices      /proc/key-users	   /proc/pagetypeinfo	/proc/timer_stats
/proc/10    /proc/1128	/proc/1681  /proc/19	/proc/1958  /proc/2000	/proc/2239  /proc/262	/proc/29    /proc/47   /proc/567  /proc/9	   /proc/diskstats    /proc/kmsg	   /proc/partitions	/proc/tty
/proc/1008  /proc/1130	/proc/18    /proc/1901	/proc/1959  /proc/2002	/proc/224   /proc/2621	/proc/3     /proc/48   /proc/585  /proc/944	   /proc/dma	      /proc/kpagecount	   /proc/sched_debug	/proc/uptime
/proc/1019  /proc/1167	/proc/1835  /proc/1903	/proc/1962  /proc/2004	/proc/2240  /proc/2638	/proc/30    /proc/49   /proc/595  /proc/949	   /proc/driver       /proc/kpageflags	   /proc/schedstat	/proc/version
/proc/1028  /proc/12	/proc/1862  /proc/1905	/proc/1964  /proc/2006	/proc/2241  /proc/2658	/proc/307   /proc/5    /proc/596  /proc/953	   /proc/execdomains  /proc/latency_stats  /proc/scsi		/proc/version_signature
/proc/1039  /proc/13	/proc/1865  /proc/1913	/proc/1974  /proc/2013	/proc/2253  /proc/27	/proc/31    /proc/50   /proc/6	  /proc/acpi	   /proc/fb	      /proc/loadavg	   /proc/self		/proc/vmallocinfo
/proc/1041  /proc/14	/proc/1866  /proc/1922	/proc/1976  /proc/2017	/proc/2257  /proc/271	/proc/311   /proc/51   /proc/622  /proc/asound	   /proc/filesystems  /proc/locks	   /proc/slabinfo	/proc/vmstat
/proc/1044  /proc/1446	/proc/1874  /proc/1924	/proc/1990  /proc/2021	/proc/2258  /proc/272	/proc/32    /proc/514  /proc/629  /proc/buddyinfo  /proc/fs	      /proc/mdstat	   /proc/softirqs	/proc/zoneinfo
/proc/1055  /proc/15	/proc/1880  /proc/1929	/proc/1993  /proc/2027	/proc/2261  /proc/2734	/proc/33    /proc/515  /proc/7	  /proc/bus	   /proc/interrupts   /proc/meminfo	   /proc/stat
/proc/1058  /proc/1508	/proc/1882  /proc/1930	/proc/1995  /proc/2036	/proc/2295  /proc/2737	/proc/41    /proc/52   /proc/73   /proc/cgroups    /proc/iomem	      /proc/misc	   /proc/swaps
/proc/1059  /proc/1528	/proc/1888  /proc/1940	/proc/1997  /proc/2051	/proc/23    /proc/2741	/proc/42    /proc/53   /proc/757  /proc/cmdline    /proc/ioports      /proc/modules	   /proc/sys
/proc/1062  /proc/16	/proc/1889  /proc/1942	/proc/1998  /proc/2098	/proc/2323  /proc/2775	/proc/43    /proc/530  /proc/758  /proc/consoles   /proc/irq	      /proc/mounts	   /proc/sysrq-trigger
/proc/1096  /proc/1649	/proc/1891  /proc/1945	/proc/1999  /proc/21	/proc/24    /proc/2777	/proc/44    /proc/539  /proc/8	  /proc/cpuinfo    /proc/kallsyms     /proc/mtrr	   /proc/sysvipc
/proc/1106  /proc/1676	/proc/1893  /proc/1952	/proc/2     /proc/2171	/proc/25    /proc/28	/proc/45    /proc/557  /proc/848  /proc/crypto	   /proc/kcore	      /proc/net		   /proc/timer_list
us1204@us1204-G41MT-S2PT:~$ ls -d /proc/[0-9]* | wc -w
161

Bon, on ne compte pas les /proc/dma ni /proc/interrupts ni /proc/filesystems, je préfère poster avant de faire un sudo kill -9 /proc/interrupts pour comprendre …

édit : bien j'ai confondu kill et killall, du fait je n'ai pas le pid de /proc/dma ni /proc/interrupts ni /proc/filesystem et je ne peux pas les kill -9.

Dernière modification par Compte supprimé (Le 07/03/2015, à 10:09)

#27 Le 07/03/2015, à 18:27

Compte supprimé

Re : Nombre de processus

Qui fait quoi ?

top → 156 tasks
htop → 93 tasks et 179 threads
ls -d /proc/[0-9]* | wc -w
157
ls -d /proc/[0-9]*/* | wc -w
6751

#28 Le 09/03/2015, à 11:59

Compte supprimé

Re : Nombre de processus

Voilà, c'est résolu je pense. Je remercie l'informaticien Christian DELAIR pour ce document qu'il accepte de partager avec nous et qui pourrait figurer dans la documentation ?

Christian DELAIR a écrit :

####################################################################################

                         Les commandes PS, TOP et HTOP

Christian DELAIR

####################################################################################

# Les 3 éléments de base abordés ici, sont :

- Process  :: Les processus standard
- threads  :: Userland threads, threads en espace utilisateur (User-Space threads)
- Kthreads :: Kernel threads,   threads en espace noyau (Kernel-Space threads)

  Toutes les "Kernel threads" (Kthreads) ont un PPID=2 (voir avec la commande ps)
  Pour mieux les repérer, "ps" affiche les Kthreads entre une paire de "[ ]".

  En effet, le gestionnaire des "Kernel threads" est le daemon [kthreadd]
  [kthreadd] a le PID=2, il est lancé par le kernel (voir son PPID=0).
  "init" a le (PID=1), son PPID=0, indique qu'il est lancé par le kernel
  C'est "init" qui lance tous les autres processus (sauf les Kthreads).

  Extrait de la commande "ps"

 

   [root@athos ~]# ps -ef
     UID        PID  PPID  C STIME TTY          TIME CMD
     root         1     0  0 15:01 ?        00:00:00 /sbin/init
     root         2     0  0 15:01 ?        00:00:00 [kthreadd]
     root         3     2  0 15:01 ?        00:00:00 [migration/0]
     root         4     2  0 15:01 ?        00:00:00 [ksoftirqd/0]
     root         5     2  0 15:01 ?        00:00:00 [stopper/0]
     root         6     2  0 15:01 ?        00:00:00 [watchdog/0]
     root         7     2  0 15:01 ?        00:00:00 [migration/1]
     root         8     2  0 15:01 ?        00:00:00 [stopper/1]
     root         9     2  0 15:01 ?        00:00:00 [ksoftirqd/1]
     root        10     2  0 15:01 ?        00:00:00 [watchdog/1]
     ...

####################################################################################

La commande "top"

   Par défaut, (c.a.d sans option) elle affiche en haut à gauche :

Tasks: NNN total

   Ce nombre NNN correspond au total suivant :

   Nb de processus standard + Nb de Kernel threads (Kthreads)

# Vérification de NNN avec la la commande "ps"

  Le nombre total de processus (équivalent à NNN) peut être donné par :

    ps -ef | wc -l

  Cette commande "ps" avec un pipe sur "wc -l" donne le même nombre NNN
  + 2 ou 3 (parce que elle va compter aussi les 2 process "ps" et "wc"
  et aussi la première ligne de titres des colonnes de "ps"

  "Processus standard": Ce nombre peut être donné approximativement par :

    ps -ef | grep -v '\[' | wc -l

  Ici, le  grep -v '\[' RETIRE les lignes qui ont un "[" comme les Kthreads

  C'est un peu approximatif, car quelques commandes peuvent avoir des "[" comme :
  sshd, gdm-session-worker, avahi-daemon... il faudrait filtrer sur le PPID = 2
  qui indique qu'il s'agit des process de type "Kthread" lancés par [kthreadd].

  "Kernel threads" (Kthreads) : Ce nombre peut être donné, approximativement par :

    ps -ef | grep '\[' | wc -l

    Ici, le  grep '\[' ne prend en compte QUE les lignes qui ont un "["

####################################################################################

La commande "top -H"

L'option "-H" de "top" demande d'afficher aussi les "threads en espace utilisateur"
ces User-Space threads, sont appelées "threads individuelles" dans la doc de "top".

   "top -H" affiche en haut à gauche :

Tasks: YYY total

   Ce nombre YYY correspond au total des trois valeurs suivantes :

   "Nb de processus standard" + "Userland threads" + "Nb de Kernel threads (Kthreads)"


(*) Tasks / Threads : La commande "top" vient du paquet "procps" ou "procps-ng"

     Avec l'ancien paquet "procps", "top" affiche ici      : Tasks: YYY total
     Avec le nouveau paquet "procps-ng", "top" affiche ici : Threads: YYY total
     Sur CentOS-6 c'est "procps" qui est installé, sur Fedora-20, c'est "procps-ng".

# Vérification de YYY avec la la commande "ps"

  Le nombre total : Processus Standard + Uthreads + Kthreads (équivalent à YYY)
  peut être donné par :

    ps -eLf | wc -l

# Cette commande "ps -eLf" liste les process en incluant aussi les User-Space threads
# Donc, avec un pipe sur "wc -l" elle donne le même nombre YYY

  toujours avec (+ 2 ou 3) parce que elle va compter aussi les 2 process "ps" et "wc"
  et aussi la première ligne de titres des colonnes de "ps"

####################################################################################

# Vérification avec la commande "htop"

La commande "htop", par défaut, affiche deux valeurs :

  Tasks: 80, 152 thr;
         ||   ||
         ||   ========> Le Nb de User-Space threads
         ||
         =============> Le Nb de Process standard

# Avec "htop", il existe de nombreuse commandes interactives, dont "H" et "K"
# (man htop). Ces commandes interactives fonctionnent comme des bascules.

  "K" commande interactive pour afficher les Kernel threads "Kthreads"
  Si l'on presse la touche "K", cela rajoute la colonne "kthr" comme dans cet exemple :

  Tasks: 80, 152 thr, 141 kthr;    (Touche K)
             ^^^^^^    ^^^^^^
             Touche    Touche
               H         K

                                            Commandes ps, grep et wc

  Tasks: 80  Defaut  Standart Process <==>  ps -ef | grep -v '\[' | wc -l
  152 thr     "H"    Userland threads <==>  Je n'en connais pas
  141 kthr    "K"    Kernel threads   <==>  ps -ef | grep '\[' | wc -l

  Le total : 80 + 152 + 141 pourra être retrouvé, toujours a 2 ou 3 près
  par la commande :

    ps -eLf | wc -l

####################################################################################

En résumé :

  Par défaut les outils "top" et "htop" n'affichent pas les mêmes informations.

  Top affiche  : Le Nb de processus standard + Le Nb de Kernel threads
  htop affiche : Le Nb de Processus standard + Le Nb de User-Space threads

####################################################################################