Performances I/O aléatoires sur VMs Linux critiques

Posté par patrick81 le 24/11/2024
RÉSOLU

patrick81

Membre depuis le 16/06/2019

yo la team j'ai un truc chelou sur nos vms linux en prod. c'est sur du san donc block device. les perfs i/o sont super instables. parfois c'est mega rapide d'autres fois ça rame à mort. `iostat -x 1` montre des `await` qui montent à 500ms sans raison. c'est l'enfer pour les apps critiques

Commentaires

thomas-henry

Membre depuis le 18/05/2024

salut! `await` élevé sur SAN ça fait penser au `io_scheduler`. t'es en quel scheduler? `cfq` par défaut est souvent pas top pour les SANs. faudrait tester `deadline` ou `noop`. `echo deadline > /sys/block/sdX/queue/scheduler`

adrien-brun

Membre depuis le 15/10/2021

et la version de ton kernel? des fois y'a des bugs i/o corrigés dans les nouvelles versions. et t'es bien avec les drivers virtuels genre `virtio_blk` pour la vm ou tu utilises encore des vieux trucs émulés? `lsmod | grep virtio`

besson-denise

Membre depuis le 03/09/2019

vérifie aussi la queue depth de tes LUNs côté SAN et côté VM. si la VM envoie trop de requêtes et que le SAN en accepte moins ça peut backlog et créer des `await`. et des snapshots ou des réplications sur le SAN en arrière-plan? ça peut plomber les perfs

patrick81

Membre depuis le 16/06/2019

le scheduler est en `deadline` partout. kernel 5.15.x. et `virtio_blk` est bien chargé. côté san rien de spécial les autres vms sur les mêmes LUNs vont bien. pas de snapshots ou réplications qui tournent à ces moments-là

thomas-henry

Membre depuis le 18/05/2024

ok donc pas le scheduler classique. est-ce que c'est lié à des pics de workload sur les VMs? t'as des processus qui font des gros batchs i/o d'un coup? ou c'est random? regarde les métriques au niveau des cgroups ou du process avec `pidstat -d`

adrien-brun

Membre depuis le 15/10/2021

et les logs kernel (`dmesg -T`)? des erreurs disk, des timeouts scsi, des resets de bus? même si c'est du virtio, ça peut masquer un souci physique en dessous. un truc du genre `blk_update_request: I/O error`?

besson-denise

Membre depuis le 03/09/2019

y'a pas une limite de connexions ou de débit réseau sur l'hyperviseur pour le trafic i/o? ou des ressources cpu allouées qui sont tirées à bloc sur le node physique? un `top` ou `htop` sur l'hyperviseur pendant un pic de latence peut donner un indice

patrick81

Membre depuis le 16/06/2019

non les logs kernel sont propres. pas d'erreurs disk. c'est des dbs donc beaucoup de petites écritures aléatoires et des lectures. ça peut être des pics de requêtes oui mais le cpu/mem de la vm est ok. c'est juste l'i/o qui se met à ramer

thomas-henry

Membre depuis le 18/05/2024

hmmm bizarre. est-ce que t'as joué avec les paramètres de cache du système de fichiers? `vm.dirty_ratio`, `vm.dirty_background_ratio`? si la vm accumule trop de pages sales en mémoire avant de les flusher sur le disk ça peut créer des latences monstrueuses quand le flush se produit

adrien-brun

Membre depuis le 15/10/2021

oui c'est une excellente piste. par défaut le `dirty_ratio` est à 20% et `dirty_background_ratio` à 10% de la ram. si ta vm a bcp de ram et beaucoup d'écritures ça peut faire des gros pauses. essaye de les baisser à 5 et 2% pour forcer des flush plus fréquents et plus petits

patrick81

Membre depuis le 16/06/2019

ah oui j'avais pas pensé à ça ! le `dirty_ratio` était bien à 20 et 10. je vais tester de baisser ça. je mets `vm.dirty_background_ratio = 2` et `vm.dirty_ratio = 5` via `sysctl` pour voir

thomas-henry

Membre depuis le 18/05/2024

normalement ça devrait lisser la charge i/o. le kernel va vider le cache plus souvent et éviter les gros à-coups. tiens nous au jus

patrick81

Membre depuis le 16/06/2019

alors le changement a eu un effet direct. les pics d'await sont quasi disparus. les perfs sont beaucoup plus stables maintenant. c'était bien le cache dirty du kernel qui mettait le bazar. un grand merci la team vous êtes au top!

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