perf d'écriture sur disque hyper lentes vm linux

laurence-pascal 15/08/2024
RÉSOLU

Salut la commu. J'ai un souci de perf d'écriture sur une VM Linux (Ubuntu 22.04) hébergée sur Proxmox. Le stockage derrière c'est du NVMe RAID 10 qui claque des perf de fou côté host, mais sur la VM j'ai des écritures qui plafonnent à 50-80MB/s alors que je devrais être à genre 500+.


# test fio simple pour les écritures
fio --name=test --ioengine=libaio --rw=write --bs=4k --numjobs=1 --size=1G --runtime=60 --group_reporting

# sortie simplifiée
write: IOPS=13k, BW=52MiB/s (55.0MB/s)

C'est une base de données qui tourne dessus (PostgreSQL) et ça se ressent énormément sur les transactions. J'ai l'impression que la VM bride un truc, mais je sais pas quoi.

15/08/2024 à 08:34

7 commentaires

epinto
Membre Actif
Avatar de epinto
epinto
Membre Actif

Salut ! Premier truc à check sur une VM Linux pour les perfs I/O c'est le scheduler disque. T'es en quel mode? noop, deadline, ou mq-deadline? cat /sys/block/sdX/queue/scheduler pour voir (remplace sdX par ton disque). Et t'as bien VirtIO activé pour ton disque dans Proxmox?

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

En complément, la config du cache de disque dans Proxmox est cruciale. T'es en "No cache", "Write back", "Write through"? Si t'es en "Write back" sans batterie de secours sur le host physique, Proxmox peut être prudent et ralentir les écritures. Et ton système de fichiers sur la VM c'est quoi?

16/08/2024 à 22:31

Alors le scheduler c mq-deadline (j'ai confondu avec cfq qui est deprecated sur les kernels récents, ma faute). VirtIO est bien activé pour le disque. Pour le cache Proxmox c "Write back" et le serveur a un UPS et une carte RAID avec batterie pour le cache. Le système de fichiers sur la VM c ext4.

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

mq-deadline c'est pas le pire mais pour du NVMe et VirtIO, le noop est souvent recommandé car l'ordonnancement est déjà fait au niveau de l'hyperviseur et du stockage physique. Essaie de passer en noop pour voir la différence. echo noop > /sys/block/sdX/queue/scheduler

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

Avec ext4 et "Write back", tu devrais avoir de bonnes perfs. Mais y'a l'option barrier=1 (par défaut) qui assure l'intégrité des données mais peut ralentir les écritures. Tu peux essayer de le désactiver (barrier=0) dans ton fstab pour tester si t'es ok avec les risques (si la batterie de la carte RAID et l'UPS sont fiables). Mais commence par le noop.

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

ok je viens de passer en noop après un redémarrage (j'ai mis ça dans /etc/default/grub pour que ce soit persistant). les tests fio donnent bw=450mib/s (472mb/s)! c'est le jour et la nuit ! merci beaucoup. je pense que le mq-deadline était en conflit avec virtio.

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

Pour le barrier=0 je vais investiguer un peu plus sur les risques pour PostgreSQL. Mais la simple activation de noop a déjà résolu 90% du problème. C'est incroyable la différence. Merci beaucoup les gars, vous avez sauvé mes perfs et mon moral !

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