perf d'écriture sur disque hyper lentes vm linux

Posté par laurence-pascal le 15/08/2024
RÉSOLU

laurence-pascal

Membre depuis le 02/09/2023

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.

Commentaires

epinto

Membre depuis le 25/04/2024

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?

thibaut99

Membre depuis le 05/08/2019

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?

laurence-pascal

Membre depuis le 02/09/2023

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`.

epinto

Membre depuis le 25/04/2024

`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`

thibaut99

Membre depuis le 05/08/2019

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`.

laurence-pascal

Membre depuis le 02/09/2023

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.

laurence-pascal

Membre depuis le 02/09/2023

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 !

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