Membre depuis le 14/03/2019
t'as vérifié les stats iostat -x 1 ou atop pendant ces pics de latence ? voir ce qui sature ou ce qui attend sur les disques.
Membre depuis le 24/03/2019
oui, iostat montre des %util à 100% mais les r/s et w/s sont pas si élevés, genre 1000 IOPS alors que les NVMe peuvent faire 500k. ça colle pas avec l'utilisation à fond. les queues depth montent pas non plus énormément.
Membre depuis le 04/04/2019
c'est quel scheduler I/O que t'utilises sur ces disques ? pour les NVMe, le mieux c'est souvent noop ou none. si t'as un scheduler plus complexe comme deadline ou cfq, il peut ajouter des latences inutiles car le hardware NVMe a son propre scheduler hyper optimisé.
Membre depuis le 14/03/2019
et les queues depth de tes disques ? côté driver nvme. si c pas assez profond dans la config du kernel, ça peut aussi créer des blocages même si le hardware est ultra rapide. le kernel fait attendre les requêtes.
Membre depuis le 06/05/2024
regarde aussi si t'as pas des process qui font des fsync fréquents ou des writes non optimisés qui bloquent le buffer cache. MySQL lui-même peut générer ça si sa config de transaction (genre innodb_flush_log_at_trx_commit) est trop agressive.
Membre depuis le 24/03/2019
on est sur mq-deadline. j'avais lu que c'était pas mal pour les SSD. pas noop parce qu'on a aussi des disques SAS pour d'autres workloads et je voulais un truc homogène.
Membre depuis le 04/04/2019
mq-deadline c'est pas idéal pour NVMe même si c'est mieux que cfq. change pour none (anciennement noop pour les vieux kernels) juste pour tes devices NVMe. ça laisse les NVMe gérer l'ordonnancement directement. c'est fait pour ça, ils sont plus intelligents que le kernel sur ce point.
Membre depuis le 14/03/2019
et vérifie les IRQ de tes cartes NVMe. si elles sont mal distribuées sur les CPUs, ça peut créer des hot-spots sur un seul core et des latences car ce core est surchargé. regarde /proc/interrupts et la config de irqbalance.
Membre depuis le 24/03/2019
j'ai changé le scheduler pour none sur les devices NVMe seulement. après quelques tests de charge, ça a l'air beaucoup plus stable ! plus de pics étranges, la latence est super basse et constante. c'était bien le scheduler du kernel qui mettait le bazar. merci les gars pour l'aide précieuse !
Vous devez être connecté pour poster un message !
Recevoir les derniers articles gratuitement en créant un compte !
S'inscrire
richard34
Membre depuis le 24/03/2019
Salut la tech team ! j'ai un truc de fou sur notre gros serveur MySQL. il a des SSD NVMe en RAID0 et normalement ça torche. mais des fois, on voit des délais I/O qui montent en flèche pour quelques secondes, genre 500ms sur des reads, alors que d'habitude c'est 0.1ms. ça arrive pas souvent mais c'est super pénible pour l'appli.