Perfs I/O aléatoires sur serveur prod avec ssd nvme

alix-alves 20/11/2024
RÉSOLU
alix-alves
Auteur Actif
Avatar de alix-alves
alix-alves
Auteur Actif

team j'ai un serveur prod avec des nvme super rapides et pourtant j'ai des latences I/O qui spike de temps en temps genre 100ms au lieu de 1ms. c'est pas constant mais quand ça arrive l'appli rame de ouf. c'est un linux centos 8. j'ai déjà vérifié le trim le scheduler i/o est en mq-deadline. des pistes ?

20/11/2024 à 01:11

6 commentaires

jacob-anais
Membre Actif
Avatar de jacob-anais
jacob-anais
Membre Actif

salut ça sent le pstate/cpufreq ou governor qui merde. si le cpu n'est pas constamment à pleine puissance quand il y a un pic de charge i/o ça peut créer des latences. force le governor en performance au lieu de ondemand pour voir


echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
20/11/2024 à 20:07
ithierry
Membre Actif
Avatar de ithierry
ithierry
Membre Actif

autre piste c'est le nr_requests dans sysfs. pour les nvme c'est mieux d'avoir des queues plus grandes pour gérer la parallélisation. t'as déjà tweaké ça ? genre monter nr_requests à 1024 ou 2048 pour voir si ça smooth les pics


echo 1024 | sudo tee /sys/block/nvme0n1/queue/nr_requests
21/11/2024 à 15:09

le multipathing peut aussi être une source si t'en as configuré. des fois les chemins vers les nvme peuvent basculer ou avoir des soucis de latence sur un chemin particulier même si le nvme est local. vérifie les logs du kernel pour des erreurs spécifiques nvme ou des resets de contrôleur

22/11/2024 à 13:14
francois-monnier
Membre Actif
Avatar de francois-monnier
francois-monnier
Membre Actif

check aussi les irq affinities des nvme. si toutes les irq sont gérées par le même core cpu ça peut créer un bottleneck. tu peux utiliser irqbalance ou les set à la main pour les distribuer sur plusieurs cores. ça peut bien améliorer les perfs sur les gros workloads i/o

23/11/2024 à 11:59
alix-alves
Auteur Actif
Avatar de alix-alves
alix-alves
Auteur Actif

alors le governor était déjà sur performance. nr_requests était à 256 je l'ai mis à 1024. ça n'a pas tout réglé. j'ai fouillé les logs du kernel et bingo ! user4 bien vu j'avais des "nvme nvme0: I/O 33 QID 3 timeout" qui apparaissaient. après investigation c'était un driver pci-e pas à jour qui faisait des micro-déconnexions du nvme. une mise à jour du firmware du contrôleur et du driver pci-e a stabilisé le truc. plus de spikes. merci pour l'aide

24/11/2024 à 08:42
jacob-anais
Membre Actif
Avatar de jacob-anais
jacob-anais
Membre Actif

top c'est souvent les drivers bas niveau les plus chiants à débugger. content que tu aies trouvé

25/11/2024 à 07:55

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