Procfs

Restez toujours informé : suivez-nous sur Google (☆)

Introduction

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) 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)

Historique

UNIX 8th Edition

La version de /proc dans UNIX 8th Edition 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 en juin 1984. Cette première version était conçue pour remplacer l'appel système ptrace utilisé pour tracer les processus.

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, mais les fichiers était accessibles seulement par les fonctions read(), write(), et ioctl().

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)

4.4BSD

BSD 4.4 utilise un clone du procsys de Plan 9

Solaris

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

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 chiffre 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

  • USB

  • PCI

  • Pnp

  • /proc/cmdline

  • /proc/cpuinfo

  • /proc/[crypto](/fr/definitions/crypto)[type=embedded-definition]

  • /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

/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.
CPU familyModelSteppingCache sizeModel nameDescription
300x?Intel 386™ DX
320x?Intel386™ SX / CX / EX
340/1x?Intel386™ SL
40/1xx?Intel 486™ DX
42xx?Intel486™ SX
43xx?Intel487™/ DX2 / DX2 OverDrive®
44xx?Intel486™ SL
45xx?IntelSX2™
48xx?IntelDX4™/ DX4 Overdrive®
51xx?Pentium®/Pentium OverDrive processors (60,66)
52xx?Pentium®/Pentium OverDrive processors (75,90,100,120,133,150,166,200)
53xx?Pentium OverDrive for 486 based systems
54xx?Pentium processor with MMX™ technology (166,200) & OverDrive with MMX™ for Pentium (75,90,100,120,133)
61xx?Pentium Pro
63xx?Pentium II, model 3 and Intel Pentium II OverDrive processor
65x0?Intel® Celeron® model 5
65x1/2Mb?Pentium II Xeon, model 5
65xotherwise?Pentium II, model 5, Pentium II Xeon with L2 Cache 512 kB
66xx?Celeron model 6
67x1/2Mb?Pentium III Xeon, model 7
67xotherwise?Pentium III, model 7 or Pentium III Xeon, model 7 with L2 Cache 512 kB
68xx?Pentium III, model 8, Pentium III Xeon, model 8 and Intel® Celeron® model 8
69xx?Pentium M processor and Intel® Celeron® model 9
610xx?Pentium III Xeon, model A
611xx?Pentium III Xeon, model B
613xx?Intel Pentium M processor, Intel® Celeron M model D. All processors are manufactures using 90 nm process
614xx?Intel Core™ Duo processor, Intel Core™ Solo model E. All processors are manufactures using 65 nm process
615xx?Intel Core™2 Duo processor model F, Xeon 51xx and 53xx. All processors are manufactures using 65 nm process
150xx?Pentium 4 and Intel Xeon processor . All processors are model 0 and manufactured using the 0.18 micrometre process
151xx?Pentium 4, Xeon processor, Intel Xeon processor MP and Intel Celeron. All processors are model 1 and manufactured using the 0.18 micrometre process
152xx?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
153xx?Pentium 4, Xeon processor, Intel Celeron D. All processors are model 3 and manufactured using the 90 nm process
154xx?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
156xx?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

/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.