perfs i/o disque pourries sur nos vms linux comment diagnostiquer

Posté par mendes-bertrand le 12/04/2025
RÉSOLU

mendes-bertrand

Membre depuis le 06/05/2024

salut la compagnie. on a des vms linux (centos/ubuntu) sur notre infra on-prem (kvm/vmware) et certaines ont des perfs i/o disque vraiment mauvaises. ça se ressent sur les applis qui tournent dessus. j'ai l'impression que c'est pas le stockage lui-même qui est lent mais plutôt un souci côté os ou vm. des commandes à lancer, des configs à vérifier pour comprendre d'où ça vient ?


# ce que j'ai déjà regardé rapidement
df -h /var/log
iostat -xz 1 10

Commentaires

jerome-riou

Membre depuis le 08/06/2019

première chose oui `iostat` c la base. regarde les `%util` et `await`. si `await` est très élevé alors que `%util` est faible c ptete des soucis de fragmentation ou de latence. si les deux sont hauts c la queue du disque qui est saturée.

chretien-hortense

Membre depuis le 26/04/2024

sur tes vms c'est quelle config de disques ? virtio-blk sur kvm ? paravirtualisé sur vmware ? et côté host la config du storage c'est quoi ? raid ? ssd ? nvm-e ? un slow i/o sur la vm peut venir d'un disque saturé sur l'hyperviseur partagé avec d'autres vms.

cmathieu

Membre depuis le 03/06/2024

check le scheduler i/o de ton kernel. `cat /sys/block/sdX/queue/scheduler`. pour les vms souvent `noop` ou `deadline` sont meilleurs que `cfq` qui est plutôt pour les disques physiques rotatifs. change-le avec `echo noop > /sys/block/sdX/queue/scheduler` (temporaire) ou `grub` (persistant).

jerome-riou

Membre depuis le 08/06/2019

aussi les options de montage filesystem. `noatime` ça aide à réduire les écritures inutiles sur les inodes. et si t'es sur ext4 avec un journal ça peut être utile de tester `barrier=0` sur des workloads non critiques mais attention au risque de corruption en cas de crash.

chretien-hortense

Membre depuis le 26/04/2024

c quel type de workload qui fait ramer ? petits fichiers, gros fichiers, random read/write, sequential ? ça impacte le choix des optimisations. si c de la bdd les petits random writes sont les pires.

mendes-bertrand

Membre depuis le 06/05/2024

ok alors le iostat montre `%util` souvent à 100% et `await` très haut, genre 100-200ms parfois. c'est du virtio-blk sur kvm, le host est sur du raid6 ssd. la workload c'est des applis java qui font beaucoup d'accès logs et qqs accès bdd locale.

jerome-riou

Membre depuis le 08/06/2019

100% util et `await` à 200ms c clair ça pue. ça sent la saturation. vu que c du raid6 ssd côté host et virtio-blk c bizarre. tu as testé le scheduler i/o ? et `fio` c la commande ultime pour vraiment benchmarker tes perfs i/o dans la vm.


# exemple fio pour random write 4k
fio --name=randwrite --ioengine=libaio --iodepth=16 --rw=randwrite --bs=4k --direct=1 --size=1G --numjobs=1 --runtime=60 --group_reporting --filename=/testfile

cmathieu

Membre depuis le 03/06/2024

sur kvm vérifie la config du cache disque de la vm. `cache=none` est souvent recommandé pour les perfs dans un contexte de raid hardware. si t'as `writeback` ou `writethrough` ça peut être ok aussi mais `none` est le plus direct.

chretien-hortense

Membre depuis le 26/04/2024

le `queue_depth` aussi peut jouer. c'est la profondeur de la file d'attente i/o. par défaut c'est souvent 128 ou 256. tu peux le tweak mais c'est avancé. et le `num_queues` si tu as plusieurs cpus virtuels, tu peux aligner le nombre de queues avec le nombre de vcpus pour mieux paralléliser.

mendes-bertrand

Membre depuis le 06/05/2024

j'ai switché le scheduler à `noop` et testé `fio`. ça a l'air un peu mieux mais pas encore le nirvana. `cache=none` est déjà configuré. je vais regarder le `num_queues` et le `queue_depth`. et aussi l'option `noatime` sur les points de montage logs.

jerome-riou

Membre depuis le 08/06/2019

ok good. si `fio` montre toujours des chiffres bas après ces tweaks alors c'est peut-être l'hyperviseur ou le storage backend du host qui a un souci, ou une saturation globale. un autre truc à voir c'est si les `dirty_ratio` et `dirty_background_ratio` du kernel linux ne sont pas trop agressifs et causent des stalls.

mendes-bertrand

Membre depuis le 06/05/2024

merci à tous pour les conseils super détaillés ! j'ai pas mal de billes pour continuer l'investigation. je vais remonter ça à l'équipe infra. c'est super utile !

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