Procfs

Un article de Wikipédia, l'encyclopédie libre.
Aller à : Navigation, rechercher

Sur les systèmes du type Unix, procfs (process file system, système de fichiers processus en anglais) est un pseudo-système de fichiers (pseudo car dynamiquement généré au démarrage[1]) utilisé pour accéder aux informations du noyau sur les processus. Le système de fichiers est souvent monté sur le répertoire /proc.

Puisque /proc n'est pas une arborescence réelle, il ne consomme aucun espace disque mais seulement une quantité limitée de mémoire vive. Cela aboutit à un paradoxe apparent : un fichier non vide a une taille affichée de 0 (avec ls).

procfs est supporté sur les systèmes suivants:

  • Solaris
  • BSD
  • Linux, qui étend le concept au-delà des processus : entre autres, description détaillée des composants matériels, du réseau...etc
  • IBM AIX (qui utilise l'implémentation de Linux pour une meilleure compatibilité)
  • QNX, (Unix temps réel)

Sommaire

[modifier] Historique

[modifier] UNIX 8th Edition

La version de /proc dans UNIX 8th Edition[2] a été implémentée par Tom J. Killian, qui présenta un article intitulé Processes as Files (processus représentés comme des fichiers) à USENIX[3] en juin 1984. Cette première version était conçue pour remplacer l'appel système ptrace utilisé pour tracer les processus.

[modifier] SVR4

Roger Faulkner et Ron Gomes portèrent /proc sur SVR4, et publièrent un article appelé The Process File System and Process Model in UNIX System V à USENIX en janvier 1991. Cette version de /proc était utilisé pour assurer l'équivalent de la commande ps[4], mais les fichiers était accessibles seulement par les fonctions read(), write(), et ioctl()[5].

[modifier] Plan 9

Plan 9 implémente aussi un système de fichiers de processus, mais va plus loin que UNIX 8th Edition : dans la version précédente, il y avait un seul fichier par processus, alors que, avec la nouvelle version, chaque processus a plusieurs fichiers associés (chaque fichier correspond à une fonction)

[modifier] 4.4BSD

BSD 4.4 utilise un clone du procsys de Plan 9

[modifier] Solaris

De même, solaris utilise un clone du procsys de Plan 9.

[modifier] Linux

Le /proc de linux est un dérivé du procsys de Plan 9.

  • Il y a un répertoire pour chaque processus en cours (y compris les processus noyau), le nom de ce processus est le nombre correspondant au PID (Identifiant de processus) (exemple : /proc/1 pour init)
    • /proc/PID/cwd,
    • /proc/PID/exe,
    • /proc/PID/root
    • /proc/PID/status
    • /proc/PID/task
  • Selon le type d'alimentation, il y aura soit un répertoire ACPI (sur les PC récents), soit sur APM (sur les PC anciens)
  • /proc/bus pour décrire les Bus informatique
  • /proc/cmdline
  • /proc/cpuinfo
  • /proc/crypto
  • /proc/devices
  • /proc/diskstats
  • /proc/filesystems
  • /proc/interrupts
  • /proc/meminfo
  • /proc/modules
  • /proc/mounts
  • /proc/net
  • /proc/partitions
  • /proc/scsi
  • /proc/slabinfo
  • /proc/swaps
  • /proc/sysvipc
  • /proc/tty
  • /proc/uptime
  • /proc/version
  • /proc/version_signature
  • Quelques commande linux utilisant /proc:
    • ps aux : affiche l'état des processus en cours.Cette commande exploite les informations présentes dans /proc/[pid]/stat.
    • uname -a : Affiche des informations sur le système: le type de machines, le nom d'hôte de la machine sur le réseau, le numéro de version du système d'exploitation et le nom du système d'exploitation.Elle utilise le /proc/version et le /proc/sys/kernel/version
    • swapon -s : affiche le résumé par périphérique de l'utilisation de la pagination sur disque. Utilise /proc/swaps.
    • free : affiche les quantités totales de mémoire et de zone de swap libres et utilisées dans le système. Utilise /proc/meminfo.
    • dmesg : affiche le tampon des messages du noyau. Elle utilise le /proc/kmsg.
    • uptime : indique depuis quand le système fonctionne. Utilise /proc/loadavg .
    • lspci : utilitaire permettant d'afficher des informations sur les bus PCI du système ainsi que sur les périphériques qui y sont connectés. Utilise /proc/bus/pci/devices.
    • lsmod : affiche la liste des modules du noyau chargés en mémoire. Emploie /proc/modules
    • mount affiche les points de montage. Emploie /proc/mounts.
    • sysctl : permet de lire et modifier les paramètres du kernel.
    • pwdx (+ le pid) : connaître le répertoire courant de travail du process indiqué par son pid. Utilise /proc/[pid]/cwd qui est un lien.
    • pgrep : recherche des processus en fonction de leur nom et d'autres propriétés. Utilise /proc/[pid] .

[modifier] /proc/cpuinfo

/proc/cpuinfo est un pseudo-fichier contenant les informations sur le(s) processeur(s) du système.

Dans le cas d'un système x86, il contient les lignes suivantes :

  • processor correspond à l'identifiant utilisé par le système pour identifier le processeur logique
  • vendor_id est une chaine ce caractères utilisée pour identifier le fabricant du processeur (soit AuthenticAMD ou GenuineIntel)
  • cpu_family est un nombre donnant la version majeure du processeur :
    • Intel - Intel affirme que cpu_family n'est qu'une indication sur le processus de fabrication, pas sur la version du processeur[6].
CPU family Model Stepping Cache size Model name Description
3 0 0 x  ? Intel 386™ DX
3 2 0 x  ? Intel386™ SX / CX / EX
3 4 0/1 x  ? Intel386™ SL
4 0/1 x x  ? Intel 486™ DX
4 2 x x  ? Intel486™ SX
4 3 x x  ? Intel487™/ DX2 / DX2 OverDrive®
4 4 x x  ? Intel486™ SL
4 5 x x  ? IntelSX2™
4 8 x x  ? IntelDX4™/ DX4 Overdrive®
5 1 x x  ? Pentium®/Pentium OverDrive processors (60,66)
5 2 x x  ? Pentium®/Pentium OverDrive processors (75,90,100,120,133,150,166,200)
5 3 x x  ? Pentium OverDrive for 486 based systems
5 4 x x  ? Pentium processor with MMX™ technology (166,200) & OverDrive with MMX™ for Pentium (75,90,100,120,133)
6 1 x x  ? Pentium Pro
6 3 x x  ? Pentium II, model 3 and Intel Pentium II OverDrive processor
6 5 x 0  ? Intel® Celeron® model 5
6 5 x 1/2Mb  ? Pentium II Xeon, model 5
6 5 x otherwise  ? Pentium II, model 5, Pentium II Xeon with L2 Cache 512 kB
6 6 x x  ? Celeron model 6
6 7 x 1/2Mb  ? Pentium III Xeon, model 7
6 7 x otherwise  ? Pentium III, model 7 or Pentium III Xeon, model 7 with L2 Cache 512 kB
6 8 x x  ? Pentium III, model 8, Pentium III Xeon, model 8 and Intel® Celeron® model 8
6 9 x x  ? Pentium M processor and Intel® Celeron® model 9
6 10 x x  ? Pentium III Xeon, model A
6 11 x x  ? Pentium III Xeon, model B
6 13 x x  ? Intel Pentium M processor, Intel® Celeron M model D. All processors are manufactures using 90 nm process
6 14 x x  ? Intel Core™ Duo processor, Intel Core™ Solo model E. All processors are manufactures using 65 nm process
6 15 x x  ? Intel Core™2 Duo processor model F, Xeon 51xx and 53xx. All processors are manufactures using 65 nm process
15 0 x x  ? Pentium 4 and Intel Xeon processor . All processors are model 0 and manufactured using the 0.18 micrometre process
15 1 x x  ? Pentium 4, Xeon processor, Intel Xeon processor MP and Intel Celeron. All processors are model 1 and manufactured using the 0.18 micrometre process
15 2 x x  ? Pentium 4, Mobile Intel P4 - M, Xeon processor, Intel Xeon processor MP, Intel Celeron and Mobile Intel Celeron. All processors are model 2 and manufactured using the 0.13 micrometre process
15 3 x x  ? Pentium 4, Xeon processor, Intel Celeron D. All processors are model 3 and manufactured using the 90 nm process
15 4 x x  ? Pentium 4, P4 Extreme edition, Pentium D, Xeon processor, Xeon MP and Celeton D. All processors are model 4 and manufactured using the 90 nm process
15 6 x x  ? Pentium 4, Pentium Extreme edition, Pentium D, Xeon processor, Xeon MP and Celeron D. All processors are model 6 and manufactured using the 65 nm process

Voici l'exemple d'un /proc/cpuinfo sur une vm linux tournant sur z/VM:

vendor_id       : IBM/S390
# processors    : 1
bogomips per cpu: 7668.00
features        : esan3 zarch stfle msa ldisp eimm dfp 
processor 0: version = FF,  identification = 080C92,  machine = 2097

[modifier] /proc/meminfo

/proc/meminfo est un pseudo-fichier de l'implémentation de procfs dans les récents noyaux linux. Il est utilisé pour fournir les informations sur l'état courant de la mémoire du système, y compris sur la mémoire virtuelle et le cache système. C'est la principale manière d'accéder à ces informations pour les programmes de l'espace utilisateur, et est celle utilisée par de nombreux utilitaires de monitorage du système.

[modifier] Références

[modifier] Voir aussi

[modifier] Articles connexes

  • lspci est un outil pour interroger le bus PCI, utilisant /proc.
  • hdparm, outil basé sur /proc/ide

[modifier] Références externes

[modifier] Notes

  1. (en) Linux startup process
  2. (en) Version 8 Unix
  3. (en) USENIX
  4. (en) en:Ps (Unix) et Commandes Unix#Processus
  5. (en) ioctl
  6. (en) http://softwarecommunity.intel.com/isn/community/en-us/forums/thread/980608.aspx
Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Contribuer
Imprimer / exporter
Boîte à outils
Autres langues