Debuguer le CPU Throttling Kubernetes avec CFS Quota

simone-thierry 13/05/2026
RÉSOLU

Je constate un phénomène étrange sur mes pods Java. Alors que ma consommation CPU réelle est bien en dessous des limites (limits.cpu), je vois des pics de container_cpu_cfs_throttled_seconds_total dans Prometheus. Le temps de réponse de l'API grimpe en flèche.

Est-ce que le réglage du CFS quota par défaut dans Kubernetes est trop agressif pour des applications multithreadées ? Comment diagnostiquer si le kernel Linux bride mes threads inutilement ?

13/05/2026 à 16:14

11 commentaires

wgeorges
Membre
Avatar de wgeorges
wgeorges
Membre

C'est un classique. Le CFS quota fonctionne sur une période de 100ms. Si ton application génère des pics de consommation sur une fraction de cette période, le kernel coupe tout.

14/05/2026 à 14:01

C'est exactement ce que je soupçonnais. Est-ce qu'augmenter la période cpu.cfs_period_us aide vraiment ou est-ce que ça déplace juste le problème ?

15/05/2026 à 06:22
xmarie
Membre Actif
Avatar de xmarie
xmarie
Membre Actif

Augmenter la période aide, mais c'est souvent une rustine. As-tu vérifié si ton app Java n'a pas trop de threads par rapport au nombre de coeurs alloués ?

16/05/2026 à 03:25
wgeorges
Membre
Avatar de wgeorges
wgeorges
Membre

Regarde aussi du côté des cgroup v2 si tu es sur une distro récente, le comportement est plus lisse.

16/05/2026 à 19:29

Je suis sur Amazon Linux 2 avec le kernel 5.10. Je vais tester de désactiver le throttling pour voir si la latence retombe.

17/05/2026 à 10:05

Attention, désactiver le throttling peut saturer ton node si un pod part en boucle infinie. Utilise cpu.cfs_quota_us à -1 avec prudence.

18/05/2026 à 08:33
wgeorges
Membre
Avatar de wgeorges
wgeorges
Membre

Tu peux aussi essayer de tuner GOMAXPROCS si c'était du Go, mais pour Java, regarde les flags -XX:ActiveProcessorCount.

18/05/2026 à 22:29
xmarie
Membre Actif
Avatar de xmarie
xmarie
Membre Actif

J'avais le même souci, j'ai fini par supprimer les limits.cpu sur les services critiques, en gardant juste les requests.

19/05/2026 à 12:43

Supprimer les limits me fait peur pour le capacity planning. Je vais tenter d'ajuster le period_us à 1s pour voir si ça lisse les spikes.

20/05/2026 à 08:32

Bonne idée, fais gaffe aux effets de bord sur les autres pods du même node.

21/05/2026 à 01:30

Test en cours sur un environnement de staging. Je reviens vers vous si les métriques throttled chutent.

21/05/2026 à 18:51

Laisser une réponse

Vous devez être connecté pour poster un message !

Rejoindre la communauté

Recevoir les derniers articles gratuitement en créant un compte !

S'inscrire