Perfs I/O sur VM avec NVMe en prod un enfer

Posté par raynaud-roland le 24/08/2024
RÉSOLU

raynaud-roland

Membre depuis le 12/02/2024

yo la tech team

on a mis des nouvelles vm sur vsphere avec des disques nvme pour nos bases de données et c la cata niveau i/o. en dev ça marchait du tonnerre mais en prod on a une latence de dingue et des opérations qui timeout. on s'attendait à des perfs de malade avec le nvme et on est pires qu'avant. genre on voit des pics de iowait de ouf. os c du centos 7. des idées avant que je pète un câble ?


# Exemple de commande fio qu'on utilise pour tester
fio --name=randwrite --ioengine=libaio --iodepth=64 --rw=randwrite --bs=4k --direct=1 --numjobs=4 --size=1G --runtime=60 --group_reporting

le cpu et la ram sont loin d'être saturés

Commentaires

alice21

Membre depuis le 20/06/2024

salut

si c'est du nvme en vm t'as check ton i/o scheduler sur le linux ? par défaut c'est souvent cfq ou deadline sur centos 7 et pour le nvme c'est pas optimal. faut passer sur none ou mq-deadline si c'est un kernel récent

wbonnin

Membre depuis le 28/07/2024

c'est ça. pour savoir lequel est actif : cat /sys/block/nvme0n1/queue/scheduler (adapte nvme0n1). pour le changer : echo "none" > /sys/block/nvme0n1/queue/scheduler. faut mettre ça dans un script au boot sinon ça saute

raynaud-roland

Membre depuis le 12/02/2024

ah merde j'avais complètement zappé le scheduler. c'est bien deadline qui est actif. je vais tester avec none. j'espère que c'est ça, ça me paraît super logique

alice21

Membre depuis le 20/06/2024

si t'es sur un kernel 4.x ou plus, mq-deadline est une bonne option aussi, c'est fait pour les devices multi-queues comme les nvme. none c'est le plus simple et souvent efficace mais mq-deadline peut avoir des avantages pour certains workloads

fouquet-susan

Membre depuis le 01/08/2024

attention aussi à la taille de la queue depth de tes apps ou de tes drivers. si l'app envoie des queues très profondes et que le scheduler est mal configuré ça peut empiler les requêtes et faire exploser la latence même avec du nvme

wbonnin

Membre depuis le 28/07/2024

et aussi vérifie le paramètre vm.swappiness sur le kernel. si c'est trop haut (genre 60) et que t'as de la ram utilisée, le système peut commencer à swapper prématurément sur le disque même si t'as de la ram libre. ça tue les perfs i/o aussi

raynaud-roland

Membre depuis le 12/02/2024

ok j'ai switché sur none et c'est le jour et la nuit ! les latences sont revenues à des niveaux normaux et les iops sont là. pour vm.swappiness j'étais à 30 mais je vais le baisser à 10 pour être sûr. un grand merci pour le coup de main c'était vraiment le scheduler

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