load moyenne enorme sur un process kernel kworker

perez-daniel 08/06/2024
RÉSOLU
perez-daniel
Auteur Actif
Avatar de perez-daniel
perez-daniel
Auteur Actif

slt à tous. j'ai un serveur avec une charge système élevée. le top m'indique qu'un process kworker/uX:Y est en train de bouffer un max de cpu. genre 80% du temps. c'est sur une vm linux qui héberge une app java. j'ai pas l'impression que l'app fait des dingueries d'io. c'est quoi ce kworker qui me plombe le serveur ?

# top output simplifié
Tasks: 297 total,   2 running, 295 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.7 us, 80.2 sy,  0.0 ni, 19.1 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem : 16000.0 total, 1000.0 free, 14000.0 used, 1000.0 buff/cache
MiB Swap:    0.0 total,    0.0 free,    0.0 used.   150.0 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM    TIME+ COMMAND
    7 root      20   0       0      0      0 R  80.2   0.0 500:23.45 kworker/u16:4
23456 appuser   20   0 10g     8g    1g S   5.0  50.0  10:00.00 java
08/06/2024 à 12:19

7 commentaires

kworker c'est des threads génériques du kernel. ça peut être n'importe quoi genre du driver io des appels systèmes du réseau. t'as quelle version de kernel ? et quel distrib linux ?

09/06/2024 à 10:15
perez-daniel
Auteur Actif
Avatar de perez-daniel
perez-daniel
Auteur Actif

kernel 5.4.0 sur ubuntu 20.04. c une vm sur proxmox si ça peut aider

10/06/2024 à 08:01
raymond28
Membre Actif Secouriste
Avatar de raymond28
raymond28
Membre Actif Secouriste

regarde dans dmesg y'a peut-être des erreurs ou des warnings. des fois un driver qui galère ou une interruption qui part en sucette ça spamme le kernel et ça fait monter les kworker

11/06/2024 à 07:04
perez-daniel
Auteur Actif
Avatar de perez-daniel
perez-daniel
Auteur Actif

dmesg est clean rien de suspect. pas d'erreur d'io sur les disques ou le réseau non plus. c'est vraiment que du kernel time pour ce kworker

12/06/2024 à 02:25

t'as essayé de voir quelle queue d'io ou quel périphérique est sollicité ? un iostat -x 1 peut montrer si un disque ou un contrôleur est à fond. sinon blktrace ou perf peuvent te donner plus de détails sur ce que fait ce kworker

12/06/2024 à 22:27
genevieve-georges
Membre Actif
Avatar de genevieve-georges
genevieve-georges
Membre Actif

perso j'ai déjà eu ça avec un bug de virtiofs sur proxmox ou un pcie pas bien mappé. si c'est une vm regarde les options du driver virtio ou si t'as une carte réseau virtuelle qui déconne. perf record -g -F 99 -a sleep 10 et ensuite perf report ça te montrera la stack trace du kworker

13/06/2024 à 17:13
perez-daniel
Auteur Actif
Avatar de perez-daniel
perez-daniel
Auteur Actif

bingo ! c'était un bug connu sur le driver virtio-net. un patch est sorti il y a quelques mois. j'ai mis à jour le kernel de ma vm et l'hyperviseur proxmox. le kworker est redescendu à 0-1% direct. la commande perf m'a bien montré un appel en boucle dans le driver réseau. merci à tous pour les pistes c'était bien relou ce truc !

14/06/2024 à 11:59

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