---
title: macOS m’a menti sur la mémoire de Docker
description: Le tableau de bord du Mac mini mesurait les processus en RSS, car macOS refuse l’USS pour presque tout, et le RSS surestime le vrai coût d’une VM.
date: 2026-09-26
tags: macos, performance, débogage
kind: short
---

La répartition mémoire du tableau de bord de mon Mac mini essaie d’abord l’USS, puis se rabat sur une autre mesure. Sauf que macOS refuse l’USS pour 976 processus sur 977 : tout le graphique en anneau tournait donc en silence sur le RSS.

La solution : utiliser l’empreinte physique, via `proc_pid_rusage` → `ri_phys_footprint`. C’est exactement le chiffre qu’affichent la colonne MEM de `top` et le Moniteur d’activité. L’empreinte compte les pages compressées à leur taille d’origine, donc les parts peuvent maintenant dépasser « used » au lieu d’être réduites pour tenir dedans. Dans ce cas, elles gardent leur vraie taille et la part Other affiche 0.

Ollama avait son propre bug : il était compté comme l’empreinte du runner *plus* la mémoire GPU du modèle chargé, soit un double comptage, puisque l’empreinte d’un runner contient déjà les buffers Metal de son modèle. Désormais, on retient la plus grande des deux valeurs.

Sur une instance de test, la part Docker affichait 11,22 Go, contre 11,23 Go additionnés à la main depuis `top`. La prod affichait 9,82 Go pour les mêmes processus, après avoir réduit le RSS en silence.

143 tests passent, dont un nouveau rien que pour le calcul de l’empreinte.
