Quel I/O scheduler pour du NVMe sous Linux

tdelannoy 03/03/2026
RÉSOLU
tdelannoy
Auteur
Avatar de tdelannoy
tdelannoy
Auteur

hello la team on est en train de tunner des serveurs de prod qui utilisent des disques NVMe sous linux et je me pose la question du I/O scheduler. on est resté sur cfq un peu par habitude mais ça me paraît pas idéal pour du flash moderne. vous utilisez quoi vous

# check le scheduler actuel
cat /sys/block/nvme0n1/queue/scheduler
03/03/2026 à 05:34

8 commentaires

stephane07
Membre Actif
Avatar de stephane07
stephane07
Membre Actif

pour du nvme c noop ou none direct les schedulers classiques comme cfq ou deadline sont faits pour des disques rotatifs ils réordonnent les i/o pour minimiser les mouvements de tête ce qui est inutile sur nvme

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

exactement le hardware nvme est déjà très intelligent pour gérer l'ordre des requêtes l'os doit juste les passer le plus vite possible sans ajouter de latence. noop est le meilleur choix dans presque tous les cas

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

d'acc je vois donc le rôle du kernel se réduit juste à passer l'i/o au disque sans y toucher. c'est logique. vous avez vu des gains significatifs en passant à noop

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

clairement des gains en latence et un peu en iops surtout sous forte charge si ton appli fait beaucoup d'i/o aléatoires. le kernel passe juste les commandes au contrôleur nvme qui les optimise super bien lui-même

06/03/2026 à 15:12

oui la latence c'est le gain principal. si t'es sur un kernel récent (genre 5.0+) le scheduler par défaut mq-deadline est aussi pas mal il est conçu pour les devices multi-queues mais none/noop reste souvent le plus direct

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

on est sur du 5.15 je vais tester none alors on cherche surtout à optimiser la latence pour notre base de données. merci pour l'info

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

fais gaffe noop et none c'est le même principe mais none est une implémentation plus moderne mq-noop ou none sont les termes exacts selon ton kernel. tu peux le changer à chaud via echo none > /sys/block/nvme0n1/queue/scheduler

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

j'ai testé avec none sous charge et on a clairement gagné des microsecondes précieuses c parfait. merci à vous

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