Perf I/O aléatoires sur serveur DB avec NVMe

rmartineau 25/11/2024
RÉSOLU
rmartineau
Auteur
Avatar de rmartineau
rmartineau
Auteur

salut les linuxistes

on a une base postgres sur un gros serveur avec des NVMe samsung des puces de dingue quoi. et pourtant on a des pics de latence I/O de temps en temps genre 100ms alors que d'habitude c'est <1ms. ça arrive souvent sous charge mais pas tout le temps et on comprend pas pourquoi. le CPU est OK la RAM est OK


# fstab
UUID=... /data ext4 defaults,noatime,nodiratime 0 0

# on a déjà mis noop comme scheduler mais ça change rien
cat /sys/block/nvme0n1/queue/scheduler
# [noop] mq-deadline kyber bfq none

des idées pour debug ça ? on a testé ioping, fio c'est pas reproductible facilement

25/11/2024 à 14:34

11 commentaires

lenoir-etienne
Membre Actif
Avatar de lenoir-etienne
lenoir-etienne
Membre Actif

euh nvme et noop c le combo classique oui. t'as vérifié les firmwares de tes NVMe ? des fois y a des bugs de latence corrigés avec un firmware plus récent

26/11/2024 à 14:27
wlelievre
Membre Actif
Avatar de wlelievre
wlelievre
Membre Actif

t'as pas une config multi-path ou des trucs genre dm-multipath avec tes NVMe ? des fois ça met le bordel et le scheduler est pas bien appliqué

27/11/2024 à 12:22
michelle60
Membre
Avatar de michelle60
michelle60
Membre

kernel version ? et t'as checké les logs dmesg pour des erreurs nvme des resets ou des trucs du genre ? des fois ça fait des pauses le temps de récupérer

28/11/2024 à 10:26
rmartineau
Auteur
Avatar de rmartineau
rmartineau
Auteur

firmware à jour dmesg clean pas de multipath. kernel 5.15. on a déjà regardé tout ça ça semble propre

29/11/2024 à 09:27
lenoir-etienne
Membre Actif
Avatar de lenoir-etienne
lenoir-etienne
Membre Actif

ok. autre piste le garbage collection de tes NVMe. si la flash est trop remplie ou si le controller est saturé par le GC ça peut causer des pics. t'as quelle utilisation d'espace ? et t'as de l'over-provisioning ?

30/11/2024 à 06:01
rmartineau
Auteur
Avatar de rmartineau
rmartineau
Auteur

on est à 70% d'utilisation et oui il y a de l'over-provisioning. les samsung PM1733 c'est pas censé avoir ce genre de souci ils sont costauds

01/12/2024 à 00:23
wlelievre
Membre Actif
Avatar de wlelievre
wlelievre
Membre Actif

ptete un souci de cgroup v2 ou de répartition des ressources I/O si t'as d'autres trucs qui tournent sur la machine. même si CPU/RAM sont ok l'I/O peut être limité

01/12/2024 à 20:57
michelle60
Membre
Avatar de michelle60
michelle60
Membre

tu uses sync ou async i/o pour postgres ? et tes fsync sont configurés comment ? une mauvaise gestion des écritures sync peut bloquer tout le pipeline

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

postgresql est en fsync=on et synchronous_commit=on donc oui il fait des fsync réguliers. on a besoin de la durabilité maximale. mais le problème apparaît même quand la charge est juste en lecture

Modifié le 23/05/2026 à 16:20
lenoir-etienne
Membre Actif
Avatar de lenoir-etienne
lenoir-etienne
Membre Actif

alors si c'est en lecture même avec noop ça peut être le scheduler qui est pas adapté aux NVMe. pour les NVMe modernes souvent c'est même pas noop mais carrément laisser le kernel faire sa vie ou none si c'est dispo pour ta distrib

certains recommandent none pour les NVMe vu que les cartes gèrent leur propre queue. essaye de setter none si dispo. sinon mq-deadline est pas mal si t'es sur un kernel récent

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

j'ai tenté none c'est le même truc que noop sur ma distrib. par contre je suis tombé sur un truc bizarre. y avait un processus de backup qui faisait des snapshots LVM silencieusement et il utilisait pas mal d'I/O pendant des courtes périodes

et le plus bizarre c'est que ce process était dans un cgroup avec des limites CPU mais pas I/O. du coup il pouvait saturer le disque malgré le CPU tranquille

on l'a déplacé et depuis les pics ont disparu. bordel le cgroup qui limite pas l'I/O c'est le truc con à la fin

merci les gars d'avoir insisté sur les configs cachées

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