# 9. Observabilité et diagnostic Cette section couvre les systèmes de fichiers virtuels d'introspection du noyau et les outils de diagnostic de premier recours — la boîte à outils minimale pour comprendre l'état réel d'un système en fonctionnement. ## /proc — l'état du noyau exposé en fichiers `/proc` est un système de fichiers **virtuel** (rien n'existe sur disque, le contenu est généré à la lecture) exposant l'état interne du noyau : - `/proc/[pid]/status` : état résumé d'un processus (mémoire, UID/GID, état d'ordonnancement). - `/proc/[pid]/fd/` : descripteurs de fichiers ouverts par ce processus — diagnostic classique d'une fuite de descripteurs. - `/proc/[pid]/maps` : cartographie mémoire virtuelle (bibliothèques chargées, permissions par région). - `/proc/meminfo`, `/proc/loadavg`, `/proc/cpuinfo` : état global du système, source de la plupart des outils de supervision (`top`, `free`, `uptime` lisent directement ces fichiers). - `/proc/sys/` : point d'entrée en LECTURE-ÉCRITURE vers les paramètres noyau réglables à chaud (`sysctl`), ex. `/proc/sys/net/ipv4/ip_forward` pour activer le routage IP. ## /sys — le modèle de périphériques exposé `/sys` (sysfs) expose la hiérarchie des périphériques et pilotes reconnus par le noyau, y compris la hiérarchie cgroups déjà vue en section 1 (`/sys/fs/cgroup/`). Contrairement à `/proc` (historiquement plutôt dédié aux processus), `/sys` suit une organisation stricte reflétant la topologie matérielle réelle (bus, périphériques, classes). ## Outils de diagnostic de premier recours - **`strace`** : trace chaque appel système émis par un processus — outil de référence pour comprendre *ce qu'un programme demande réellement au noyau* (fichiers ouverts, sockets créées, permissions refusées). - **`ltrace`** : équivalent pour les appels de bibliothèque partagée plutôt que les appels système. - **`lsof`** : liste les fichiers ouverts par processus — répond directement à « qui a ce fichier ouvert / qui écoute sur ce port ». - **`perf`** : profileur basé sur les compteurs de performance matériels du CPU — identifie où le temps CPU est réellement dépensé, jusqu'au niveau fonction voire ligne de code avec les symboles de débogage disponibles. - **`dmesg`** : tampon circulaire des messages du noyau — premier réflexe face à un comportement matériel anormal (disque, réseau, OOM killer). ## Le OOM killer Quand la mémoire disponible (RAM + swap) est épuisée, le noyau invoque l'*Out-Of-Memory killer*, qui choisit un processus à terminer de force selon un score (`/proc/[pid]/oom_score`, influençable par `oom_score_adj`) combinant consommation mémoire et priorité déclarée — mécanisme de dernier recours pour éviter un blocage total du système, visible dans `dmesg`/le journal noyau après coup (jamais silencieux). *(Schéma disponible : `schema.svg`, dans ce dossier.)*