perf I/O bizarres sur des VM Linux en prod avec du mongo

luce80 06/02/2025
RÉSOLU
luce80
Auteur
Avatar de luce80
luce80
Auteur

hello la team ! on a des VMs Linux sur VMware qui hébergent du MongoDB et on a des drops de perf I/O assez violents de temps en temps. genre les queries qui prennent 10x plus de temps. j'ai checké le CPU et la RAM des VMs, rien d'anormal. ça sent le scheduler I/O qui fait des siennes. vous avez des best practices pour les VMs avec des bases de données ?

06/02/2025 à 22:18

10 commentaires

tdelattre
Membre
Avatar de tdelattre
tdelattre
Membre

salut. pour les VMs, surtout si l'OS hôte gère déjà son propre scheduler I/O (genre ESXi), on recommande souvent noop ou deadline. cfq est souvent le défaut mais il est pas idéal pour les environnements virtualisés car il fait trop de boulot déjà fait par l'hyperviseur.

Modifié le 23/05/2026 à 16:20

ouais noop c'est le plus simple il passe tout direct au kernel sans ordonnancement. deadline c'est un bon compromis, il assure que les requêtes ne soient pas trop retardées. pour voir ton scheduler actuel : cat /sys/block/sdX/queue/scheduler (remplace sdX par ton device).

Modifié le 23/05/2026 à 16:20
rclement
Membre Actif
Avatar de rclement
rclement
Membre Actif

et si t'es sur un kernel récent (genre 4.x ou plus) et que t'as du NVMe ou du stockage bloc rapide, mq-deadline peut être encore mieux. c'est la version multi-queue de deadline qui tire parti des interfaces modernes. faut voir si ton kernel le supporte.

Modifié le 23/05/2026 à 16:20
luce80
Auteur
Avatar de luce80
luce80
Auteur

merci ! je viens de checker, on est en cfq. je vais passer une VM en noop pour tester. pour changer à chaud : echo noop > /sys/block/sdX/queue/scheduler c'est ça ? faut le rendre persistant dans grub après.

Modifié le 23/05/2026 à 16:20
tdelattre
Membre
Avatar de tdelattre
tdelattre
Membre

c'est ça pour le changer à chaud. pour la persistance, modifie la ligne GRUB_CMDLINE_LINUX dans /etc/default/grub et ajoute elevator=noop puis update-grub et reboot. si noop te donne pas les perfs que tu veux, tente deadline ou mq-deadline.

Modifié le 23/05/2026 à 16:20

attention aussi au niveau de VMware. t'es sur quel type de datastore ? et t'as checké le queue depth côté VM et côté hyperviseur ? parfois c'est une saturation là-bas avant même que le scheduler Linux ne voie le souci.

12/02/2025 à 05:56
luce80
Auteur
Avatar de luce80
luce80
Auteur

on est sur du vSAN. j'ai passé une VM en noop, c'est mieux mais j'ai toujours des pics occasionnels. je vais regarder le queue depth et les métriques vSAN. on a pas mal de VMs sur le même datastore ptete de la contention.

Modifié le 23/05/2026 à 16:20
rclement
Membre Actif
Avatar de rclement
rclement
Membre Actif

si t'es sur vSAN avec un kernel moderne, mq-deadline est souvent le vainqueur. noop est bien pour les hyperviseurs qui gèrent tout, mais mq-deadline peut mieux répartir la charge sur les queues I/O du kernel et du stockage sous-jacent.

Modifié le 23/05/2026 à 16:20
luce80
Auteur
Avatar de luce80
luce80
Auteur

je viens de passer en mq-deadline sur une VM et là c'est le jour et la nuit. plus aucun pic de latence. les queries mongo sont stables. c'était bien le scheduler ! merci à tous pour les infos et les pistes, vous m'avez sauvé mon lundi.

Modifié le 23/05/2026 à 16:20
tdelattre
Membre
Avatar de tdelattre
tdelattre
Membre

nickel content que ça ait résolu ton problème ! mq-deadline c'est vraiment le bon choix pour les infra modernes.

Modifié le 23/05/2026 à 16:20

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