disque dur qui rame sur une vm linux lourde utilisation cpu mais pas tant de iops

Posté par valentine19 le 06/03/2026
RÉSOLU

valentine19

Membre depuis le 02/08/2019

salut la compagnie

on a une vm linux qui héberge une app critique et depuis hier elle rame de ouf. le souci c'est que les metrics iops montrent rien d'anormal genre 200-300 iops max. par contre le cpu est à 80-90% et l'application met un temps fou à répondre. j'ai l'impression que le disque est lent mais pourquoi le cpu est haut et les iops basses ? on est sur du ssd nvme sur le host


# exemple de commande que j'ai lancée
iostat -dx 1

Commentaires

perrier-thierry

Membre depuis le 19/07/2019

yo

c'est ptete pas les iops qui sont le souci mais la latence. regarde le `%util` dans `iostat` s'il est proche de 100% même avec peu d'iops ça veut dire que le disque est saturé en temps d'accès. et `await` ou `svctm` pour la latence par opération. aussi check le `vmstat -w 1` pour voir le `wa` (wait i/o) du cpu

valentine19

Membre depuis le 02/08/2019

le `%util` est bien à 100% et `await` à plus de 100ms. le `wa` est aussi super haut sur `vmstat`. donc ouais ça confirme le disque lent. mais pourquoi alors qu'on est sur nvme et que les iops sont faibles ?

gilles-descamps

Membre depuis le 02/04/2019

t'es sur quelle techno de virtualisation ? esxi kvm ? des fois c'est la config du controller disque virtuel qui est pas opti. genre tu as combien de queues pour le vdisk ? et la taille des requêtes aussi ça joue. si ton app fait plein de petites écritures aléatoires ça peut saturer la queue du disque même si le volume global de data est faible

paris-christophe

Membre depuis le 01/08/2019

et le cache de la vm ? t'es en write-through ou write-back ? write-back c'est plus performant mais si y'a un souci de flush ou de cache size ça peut bloquer. aussi le `scheduler` i/o dans la vm. t'es sur `cfq`, `deadline` ou `noop` ? `noop` est souvent meilleur pour les vms avec un bon hyperviseur

valentine19

Membre depuis le 02/08/2019

on est sur kvm. j'ai regardé le scheduler c'était `cfq`. je vais essayer `noop`. pour le cache j'ai pas la main sur la config kvm faut que je vois avec l'infra

perrier-thierry

Membre depuis le 19/07/2019

oui `cfq` c'est à bannir pour les vms. `noop` ou `deadline` c'est mieux. `noop` délègue la gestion de l'ordre à l'hyperviseur et au disque physique. `deadline` est pas mal pour équilibrer latence et throughput. test `noop` en premier

gilles-descamps

Membre depuis le 02/04/2019

fais un `cat /sys/block/sdX/queue/rotational` pour t'assurer qu'il voit bien un ssd (retourne 0). et vérifie la taille des blocs logique et physique avec `fdisk -l` ou `blockdev --getbsz /dev/sdX`. si l'appli écrit avec des blocs beaucoup plus petits que le bloc physique du disque ça fait plein de petites iops qui créent de la latence

valentine19

Membre depuis le 02/08/2019

j'ai mis le scheduler à `noop` et c'est déjà mieux. le `wa` a bien chuté. mais c'est pas encore parfait le `await` est toujours un peu haut

paris-christophe

Membre depuis le 01/08/2019

reste la taille des requêtes et le cache. si l'appli fait des milliers de petites requêtes de 4kb et que ton bloc nvme est à 64kb ça va être inefficace. et si le cache kvm est en write-through ou limité en taille ça va pas aider à absorber les pics. faut voir avec l'infra pour optimiser ça côté hyperviseur

valentine19

Membre depuis le 02/08/2019

ok le passage à `noop` a réglé une bonne partie du problème. pour le reste c'était bien le cache kvm qui était pas opti et la taille des blocs de l'appli qui était pas alignée avec le disque. on a ajusté côté hyperviseur et l'appli tourne comme un charme maintenant. merci à tous pour les pistes !

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