perf i/o disque random ultra lente sur VM Linux

Posté par andre-eric le 08/03/2025
RÉSOLU

andre-eric

Membre depuis le 26/03/2020

yo la tech team

on a une VM sur Proxmox (Debian 11) avec un disque virtio-scsi et les perfs I/O random sont dégueu

genre un simple dd if=/dev/zero of=test.tmp bs=1M count=1000 conv=fsync ça prend des plombes

et un fio en random write pareil on est à des misères de iops

la vm a genre 8 cpu et 16go ram le disque est sur un ssd nvme côté hyperviseur donc ça devrait déchirer

vous avez déjà eu ce genre de soucis avec virtio-scsi


# exemple de fio test
fio --name=random-write --ioengine=libaio --iodepth=64 --rw=randwrite --bs=4k --size=1G --numjobs=1 --direct=1 --group_reporting

Commentaires

vincent93

Membre depuis le 27/03/2019

hello

tu as checké la configuration du cache disque dans Proxmox pour cette VM

si t'es sur "no cache" ou "write through" ça peut plomber les perfs

tente avec "write back" (si t'as une batterie sur ton contrôleur host bien sûr) ou "write back (unsafe)" pour tester juste si ça améliore

andre-eric

Membre depuis le 26/03/2020

ouais j'ai essayé toutes les options

même avec "write back" (safe) ça change pas grand chose

le dd est toujours lent et fio aussi

les logs de l'hyperviseur ou de la VM ne montrent rien d'anormal pas d'erreurs I/O

hrenaud

Membre depuis le 12/12/2018

t'as regardé la file d'attente I/O sur la VM

genre un iostat -x 1 et tu regardes la colonne %util et avgqu-sz

si le %util est à 100 et que avgqu-sz est élevé ça veut dire que le disque virtuel est saturé

ça pourrait être un problème de scheduler I/O aussi

par défaut debian c'est ptete cfq ou deadline tu devrais essayer mq-deadline ou none si t'es sur un nvme

andre-eric

Membre depuis le 26/03/2020

ok je vais checker iostat

iostat montre bien 100% util et avgqu-sz qui monte bien haut pendant les tests

le scheduler est bien deadline par défaut

comment je change ça pour mq-deadline

vincent93

Membre depuis le 27/03/2019

pour changer le scheduler tu peux le faire à chaud


echo mq-deadline > /sys/block/sdX/queue/scheduler
# remplace sdX par ton device (ex sda)

pour le rendre persistant il faut modifier grub ou udev mais déjà teste à chaud

sinon il y a aussi la taille de la queue virtuele dans la conf VM de proxmox pour virtio-scsi ça s'appelle "IO Thread" ou "discard" mais je pense plus au scheduler là

andre-eric

Membre depuis le 26/03/2020

PUTAIN de scheduler

je suis passé sur mq-deadline et les perfs ont EXPLOSÉ

le fio est passé de 200 IOPS à plus de 10000 IOPS en random write

le dd prend 2s au lieu de 30s

je me sens bête d'avoir pas pensé à ça direct

merci les gars vous avez sauvé ma soirée

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