Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Memoire

La formule

pic ≈ 12 Mio                                  base (14,5 Mio en glibc)
    + 5,5 Mio                                 si un backend S3 sert
    + hash_workers × m + 2 Mio                verifications de mot de passe
    + sessions × 0,15 Mio
    + connexions en file de hachage × 70 Kio  au plus hash_queue
    + transferts locaux × 4 Mio
    + uploads S3 × 26 Mio + downloads S3 × 8 Mio
    + adresses suivies par les bans × 225 o

m est le plus grand m argon2 du fichier d’utilisateurs : 19 Mio au profil owasp-min (defaut de hash-password), 64 Mio au profil rfc9106-low-mem. La ligne de demarrage donne ce terme : peak_memory="1 thread × 19 MiB = 19 MiB". Voir Verification des mots de passe.

La formule est une borne haute : elle additionne des pics qui ne tombent pas tous au meme instant. Aucun cas mesure ne l’a depassee. La taille des fichiers n’y entre pas : les transferts sont en flux.

Les termes sont des mesures sur l’image publiee (binaire musl statique, x86_64), client OpenSSH ; une connexion en file de hachage pese ~42 Kio en Basic, un telechargement local 2,3 Mio. A grande echelle avec S3, les uploads dominent : 4 fils a m=65536 et 10 uploads S3 mesurent 415 Mio (formule : 537). Rien ne plafonne le nombre d’uploads S3 simultanes ; max_sessions_per_user borne par utilisateur.

Un petit deploiement sous 80 Mo

30 utilisateurs, ~900 fichiers par jour : quelques clients simultanes.

[auth]
hash_workers = 1      # une verification a la fois : 1 × 19 Mio
hash_queue = 32       # une file pleine : 32 × 70 Kio = 2,2 Mio

Avec des hashs hash-password (profil owasp-min), sans aucun hash rfc9106-low-mem dans le fichier :

VarianteFormuleTient sous 80 Mo
backend local45,5 Miooui
2 fils, backend local64,5 Miooui
S3, un upload a la fois64,7 Miooui
S3, 3 uploads simultanes116,5 Mionon
profil rfc9106-low-mem90,5 Mionon : une seule verification depasse le budget
file par defaut (1024)+70 Mio file pleinenon

Binaires glibc

Les images Docker (musl) rendent la memoire apres chaque pic ; un binaire glibc (releases, hote glibc) garde dans ses arenes la memoire des hashs : 95 Mio retenus apres une rafale (4 fils, m=19456), 19 Mio avec MALLOC_MMAP_THRESHOLD_=4194304. Posez cette variable (Environment= dans l’unite systemd) et ne reglez pas MALLOC_ARENA_MAX, qui monte le pic.

Kubernetes

ReglageCe qu’il doit couvrir
limits.memoryle pic de la formule, sur le nombre de transferts et de sessions simultanes attendus, plus une marge
requests.memoryla memoire au repos et en charge ordinaire : base et sessions

Le chart livre requests.memory: 64Mi et limits.memory: 256Mi. Avec son defaut (1 fil, tire de requests.cpu: 100m), 1000 connexions SSH en file au profil rfc9106-low-mem montent a 146 Mio. Sur un noeud charge, montez la requete vers le pic attendu.

Un pod sans limits.cpu voit les CPU du noeud : voir Verification des mots de passe pour fixer le pool.

Suivre la memoire

/metrics expose process_resident_memory_bytes et process_peak_resident_memory_bytes (Linux seulement), et la console les trace en direct. Voir Metriques.

Non mesure : transferts REST, proxy SFTP, telemetrie active, milliers d’utilisateurs, aarch64 et Windows.