perf(pcmirror-serveur) : un balayage par heure, et il cède le processeur #19

Merged
foXaCe merged 1 commit from perf/balayage-du-miroir into main 2026-10-17 19:28:35 +02:00
Owner

Le balayage parcourt le miroir entier — 3,3 M de fichiers, 328 000 dossiers — en cent vingt-huit secondes. Toutes les quinze minutes, cela faisait 15 % d un cœur en permanence, mesuré sur le service en marche (68 s de processeur pour 7 min de vie).

Deux corrections dans l unité :

  • **** : une passe par heure suffit pour un miroir qui se synchronise à l heure — et elle tombe en décalage naturel avec la synchro, qui part à l heure ronde. Le processeur passe de ~15 % à ~3 % d un cœur.
  • ** + ** : un tableau d état ne dispute ni le processeur ni le disque au rsync. C est exactement ce que portait l ancien service Python.

Ce n était pas une fuite de mémoire. La mémoire réelle du processus est de 0 Mo ; les 2 Go du pic sont du cache de pages et de dentries, récupérable, que le noyau attribue au cgroup parce qu il parcourt le miroir — et qui redescend tout seul (38 Mo au repos).

Vérifié : appliqué sur le 108, , , balayage horaire, service reparti et page servie.

Le balayage parcourt le miroir entier — **3,3 M de fichiers, 328 000 dossiers** — en **cent vingt-huit secondes**. Toutes les quinze minutes, cela faisait **15 % d un cœur en permanence**, mesuré sur le service en marche (68 s de processeur pour 7 min de vie). Deux corrections dans l unité : - **** : une passe par heure suffit pour un miroir qui se synchronise à l heure — et elle tombe en décalage naturel avec la synchro, qui part à l heure ronde. Le processeur passe de ~15 % à ~3 % d un cœur. - ** + ** : un tableau d état ne dispute ni le processeur ni le disque au rsync. C est exactement ce que portait l ancien service Python. **Ce n était pas une fuite de mémoire.** La mémoire réelle du processus est de **0 Mo** ; les 2 Go du pic sont du cache de pages et de dentries, récupérable, que le noyau attribue au cgroup parce qu il parcourt le miroir — et qui redescend tout seul (38 Mo au repos). Vérifié : appliqué sur le 108, , , balayage horaire, service reparti et page servie.
perf(pcmirror-serveur) : un balayage par heure, et il cede le processeur
Some checks failed
Contrôles des références / Références du comportement (pull_request) Successful in 4s
Contrôles des références / Crate pcmirror (formatage, Clippy, tests) (pull_request) Failing after 14s
Contrôles des références / Livraison (style des scripts, essai à blanc) (pull_request) Successful in 2s
Contrôles des références / Front d'état (types, lint, format, tests, build, bout en bout) (pull_request) Successful in 22s
dae8d5899f
Le balayage parcourt le miroir entier — 3,3 M de fichiers, 328 000 dossiers — en
cent vingt-huit secondes. Toutes les quinze minutes, cela faisait 15 % d'un cœur
en permanence, pour un miroir qui se synchronise à l'heure : une passe par heure
suffit, et elle tombe en décalage naturel avec la synchro, qui part à l'heure
ronde.

Le service porte aussi Nice=10 et IOSchedulingClass=idle, comme l'ancien service
Python : un tableau d'état ne dispute ni le processeur ni le disque au rsync.

Ce n'était pas une fuite de mémoire : la mémoire réelle du processus est de
0 Mo, les 2 Go du pic sont du cache de pages et de dentries, récupérable, que le
noyau attribue au cgroup parce qu'il parcourt le miroir.
Collaborator

fusion-auto : pas de fusion, la CI est rouge (Crate pcmirror). Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.

`fusion-auto` : pas de fusion, la CI est rouge (Crate pcmirror). Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.
Collaborator

fusion-auto : pas de fusion, la PR est en conflit avec main : à rebaser. Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.

`fusion-auto` : pas de fusion, la PR est en conflit avec main : à rebaser. Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.
hermes-bot force-pushed perf/balayage-du-miroir from dae8d5899f
Some checks failed
Contrôles des références / Références du comportement (pull_request) Successful in 4s
Contrôles des références / Crate pcmirror (formatage, Clippy, tests) (pull_request) Failing after 14s
Contrôles des références / Livraison (style des scripts, essai à blanc) (pull_request) Successful in 2s
Contrôles des références / Front d'état (types, lint, format, tests, build, bout en bout) (pull_request) Successful in 22s
to 52b88e5617
Some checks failed
Livraison de pcmirror après chaque fusion / Livrer le service d'état du 108 (push) Successful in 28s
Contrôles des références / Références du comportement (pull_request) Successful in 1s
Contrôles des références / Crate pcmirror (formatage, Clippy, tests) (pull_request) Has been cancelled
Contrôles des références / Livraison (style des scripts, essai à blanc) (pull_request) Has been cancelled
Contrôles des références / Front d'état (types, lint, format, tests, build, bout en bout) (pull_request) Has been cancelled
2026-10-17 19:25:54 +02:00
Compare
perf(pcmirror-serveur) : un balayage par heure, et il cede le processeur
Some checks failed
Contrôles des références / Références du comportement (pull_request) Successful in 1s
Contrôles des références / Crate pcmirror (formatage, Clippy, tests) (pull_request) Successful in 1m23s
Contrôles des références / Livraison (style des scripts, essai à blanc) (pull_request) Successful in 3s
Contrôles des références / Front d'état (types, lint, format, tests, build, bout en bout) (pull_request) Failing after 15s
2ede127248
Le balayage parcourt le miroir entier — 3,3 M de fichiers, 328 000 dossiers — en
une a deux minutes selon la fraicheur du cache. Toutes les quinze minutes, cela
faisait 15 % d'un coeur en permanence, pour un miroir qui se synchronise a
l'heure : une passe par heure suffit, et elle tombe en decalage naturel avec la
synchro, qui part a l'heure ronde.

Le service porte aussi Nice=10 et IOSchedulingClass=idle, comme l'ancien service
Python : un tableau d'etat ne dispute ni le processeur ni le disque au rsync.

Ce n'etait pas une fuite de memoire : la memoire reelle du processus est de 0 Mo,
les 2 Go du pic sont du cache de pages et de dentries, recuperable, que le noyau
attribue au cgroup parce qu'il parcourt le miroir.
foXaCe merged commit 54f39d5e0a into main 2026-10-17 19:28:35 +02:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
3 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
foXaCe/pc-mirror!19
No description provided.