7 commentaires
hello !
c'est clair qu'avec du nvme tu devrais pas avoir ça. pour le scheduler i/o, sur du nvme physique on est souvent en none ou noop car le device gère lui-même son ordonnancement. mais sur une vm avec virtio-blk, c'est pas toujours le meilleur choix.
tu peux checker cat /sys/block/vda/queue/scheduler (ou sda/nvme0n1 etc, selon ton disque). si c'est noop ou none, essaye de basculer sur mq-deadline ou bfq pour voir. echo mq-deadline > /sys/block/vda/queue/scheduler (en root bien sûr).
ok je vais regarder le scheduler. c'est bien noop par défaut. l'hyperviseur semble ok, pas de surcharge cpu/ram. drivers virtio sur le host sont les derniers. coté VM c'est bien virtio-blk.
virtio-blk c'est le "vieux" driver pour les disques virtuels. pour du NVMe backend, souvent le virtio-scsi est plus performant car il gère mieux les commandes SCSI et peut passer plus d'infos sur le type de backend au kernel guest. ça permet au kernel guest de mieux optimiser l'I/O.
si tu peux tester de changer le type de disque virtuel dans ta config KVM de virtio-blk à virtio-scsi et voir ce que ça donne, c'est une grosse piste.
intéressant ça ! j'avais pas pensé au virtio-scsi. je vais tenter de recréer une VM de test avec virtio-scsi et le scheduler en mq-deadline.
BOOM ! les gars vous êtes des génies !
j'ai refait une VM avec virtio-scsi et j'ai mis le scheduler en mq-deadline. les perfs I/O sont passées de 30MB/s à genre 500MB/s sur un simple dd. c'était bien le combo virtio-blk + noop qui bridait tout avec le backend NVMe. incroyable la différence.
merci un million de fois !
nickel ! content que ça ait résolu ton problème. c'est un classique avec les environnements virtuels, le "optimisé pour bare-metal" n'est pas toujours le bon choix pour le guest.
Laisser une réponse
Vous devez être connecté pour poster un message !
salut les linuxiens
on a migré nos VM dev sur une nouvelle infra avec du NVMe en backend et depuis, les perfs I/O sont vraiment pas top. j'ai un peu de mal à comprendre pourquoi.
les VMs sont sur KVM, avec des disques virtio-blk. iostat me montre que le disque est utilisé à 90% mais le throughput est minable, genre 20-30MB/s alors que les NVMe derrière sont censés envoyer du lourd.
y'a un truc à tuner côté kernel linux pour du NVMe virtualisé ? genre le scheduler I/O ?