9 commentaires
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.
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.
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.
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.
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 ?
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.
Laisser une réponse
Vous devez être connecté pour poster un message !
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 à
noopsur l'OS guest mais ça change rien.