Membre depuis le 24/02/2020
ah le classique scheduler I/O. si t'es sur du NVMe avec un bon HBA coté host et que t'as du LVM sur LVM ça sent le `none` ou `mq-deadline` coté host et `none` ou `noop` coté guest. `noop` c'est bien quand le stockage gère déjà tout l'ordonnancement.
Membre depuis le 20/06/2024
totalement d'accord avec `none` ou `noop` sur les deux niveaux. mais surtout, il faut regarder si tu as pas un souci de driver NVMe sur le host. et est-ce que ton hyperviseur est bien tuné pour les NVMe ? genre pas de sur-allocation de CPU ou de mémoire qui flinguerait les queues I/O.
Membre depuis le 20/03/2019
le `none` scheduler est souvent le meilleur pour les NVMe parce qu'ils ont leur propre intelligence pour optimiser les accès. mais si tu as du LVM, tu as une couche de plus. t'as vérifié les block sizes de tes filesystems et de tes LVMs ? des fois un mismatch peut pénaliser un peu.
Membre depuis le 10/08/2019
le scheduler sur le host est `mq-deadline`. j'avais mis `noop` sur le guest. j'ai testé `none` sur le guest pareil. je vais tenter `none` sur le host aussi. les block sizes sont default 4k partout. c'est une VM KVM/QEMU, je suis pas sûr des drivers NVMe du host.
Membre depuis le 24/02/2020
si le host est en `mq-deadline` c'est pas idéal pour le NVMe. mets `none` sur le host pour les NVMe. et côté guest essaie `none` ou `kyber` (si ton kernel guest le supporte bien). `kyber` est pas mal pour les workloads mixtes.
Membre depuis le 20/06/2024
ouais et un truc tout con mais qui arrive souvent : est-ce que ton LVM coté guest est bien en mode `cache=writethrough` si tu as des caches ? des fois un `writeback` mal géré peut donner des latences cheloues. et la taille de tes queues I/O aussi. `cat /sys/block/nvme0n1/queue/nr_requests`.
Membre depuis le 10/08/2019
ok j'ai mis `none` partout (host nvme, guest lvm). et j'ai regardé `nr_requests` c'est à 128 par défaut. les latences ont un peu baissé mais c'est pas encore parfait. j'ai toujours des pics de latence. je commence à suspecter le LVM sur LVM. est-ce que c'est une bonne idée cette architecture ?
Membre depuis le 20/03/2019
LVM sur LVM c'est pas l'idéal pour les perfs pures. chaque couche ajoute un overhead. si tu peux simplifier ça serait mieux. genre LVM direct sur NVMe et ta VM prend un LV directement. ou carrément passer le NVMe en passthrough à la VM si c'est une VM unique sur ce NVMe. ça élimine l'hyperviseur de la boucle I/O.
Membre depuis le 10/08/2019
je vais tester de simplifier le stack LVM et voir pour le passthrough si c'est possible. ça expliquerait les pics. merci pour toutes ces pistes c'est super utile !
Vous devez être connecté pour poster un message !
Recevoir les derniers articles gratuitement en créant un compte !
S'inscrire
alaine
Membre depuis le 10/08/2019
salut la team sysadmin ! j'ai un souci de perfs I/O sur une VM linux (ubuntu 22.04, kernel 6.2) toute neuve qui tourne sur un serveur physique avec des NVMe super rapides. la VM a son disque sur un LVM au-dessus d'un LVM sur l'NVMe directement. je vois des pics de latence à 50ms sur des opérations qui devraient prendre 1-2ms. l'appli gueule grave. j'ai mis le scheduler I/O à `noop` sur l'OS guest mais ça change rien.