Perf disque random lent sur NVMe Linux

cecile-guyon 08/10/2024
RÉSOLU
cecile-guyon
Auteur Actif Secouriste
Avatar de cecile-guyon
cecile-guyon
Auteur Actif Secouriste

salut la compagnie. j'ai une VM linux avec un NVMe qui est censé être ultra rapide et mes perfs en random read/write sont décevantes. j'ai 100k iops en theorie et je peine à atteindre 15k. je rate quoi coté kernel ou tuning ?


# quelques infos système
uname -a
Linux my-vm 5.15.0-78-generic #85-Ubuntu SMP Mon Jul 17 09:27:07 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT,SCHED,RQ_SIZE
nvme0n1     ext4    100G /mnt/data   mq-deadline     256
08/10/2024 à 10:19

10 commentaires

cmathieu
Membre Actif
Avatar de cmathieu
cmathieu
Membre Actif

alors pour le nvme le mq-deadline c'est bien mais tu peux essayer none (noop) des fois c'est mieux ou le kyber. et check ton blockdev --setra /dev/nvme0n1 ça aide des fois de monter le readahead. sinon un fio pour mesurer c'est quoi tes vraies perfs

09/10/2024 à 08:44
rdiallo
Membre
Avatar de rdiallo
rdiallo
Membre

c'est une vm ? sur quel hyperviseur ? vmware kvm ? des fois le driver paravirtualisé ou le cache de l'hyperviseur peuvent brider. t'as quelle version des drivers virtio si c'est kvm

10/10/2024 à 04:57
laurent-jean
Membre Actif
Avatar de laurent-jean
laurent-jean
Membre Actif

le filesystem ext4 est monté avec quelles options ? noatime nodiratime pour les iops c'est mieux. et le trim/discard est actif pour le nvme ? fstrim -av ou option discard au mount

11/10/2024 à 01:05
cmathieu
Membre Actif
Avatar de cmathieu
cmathieu
Membre Actif

faut bien isoler le souci avec fio. un truc du genre : fio --name=rand_rw --ioengine=libaio --iodepth=64 --rw=randrw --bs=4k --size=10G --numjobs=4 --runtime=60 --filename=/mnt/data/testfile --direct=1 --group_reporting

11/10/2024 à 21:20
rdiallo
Membre
Avatar de rdiallo
rdiallo
Membre

y'a pas de swap sur ce disque ? si y'a de la swap et qu'elle est sollicitée ça peut plomber les perfs. regarde avec free -h et vmstat

12/10/2024 à 20:27
laurent-jean
Membre Actif
Avatar de laurent-jean
laurent-jean
Membre Actif

et ton kernel 5.15 est récent ça va. mais regarde si des fois ton cpu est pas en train de thrash. genre cpu steal time élevé sur une vm shared. avec sar ou top

13/10/2024 à 17:45
cmathieu
Membre Actif
Avatar de cmathieu
cmathieu
Membre Actif

la queue depth du nvme driver et du controlleur virtio est elle bien configurée ? tu peux voir ça avec cat /sys/block/nvme0n1/queue/nr_requests

14/10/2024 à 13:30
rdiallo
Membre
Avatar de rdiallo
rdiallo
Membre

le cache ecriture sur le nvme lui même ? tu peux le voir avec hdparm -I /dev/nvme0n1 mais sur les nvme c'est moins courant qu'avant

15/10/2024 à 10:27
laurent-jean
Membre Actif
Avatar de laurent-jean
laurent-jean
Membre Actif

et la taille des blocs utilisés par l'appli vs la taille des blocs du filesystem ? ça peut créer des soucis d'alignement si pas pareil

16/10/2024 à 08:31
cecile-guyon
Auteur Actif Secouriste
Avatar de cecile-guyon
cecile-guyon
Auteur Actif Secouriste

ok un gros merci à tous ! c'était un combo de plusieurs trucs. le fio a été super utile ça m'a permis de voir que le problème était vraiment au niveau bloc. j'ai mis le scheduler à 'none' et surtout j'ai augmenté la queue depth de l'hyperviseur (kvm) pour la vm. en plus j'avais oublié le discard sur le mount. maintenant je suis à 80k iops c'est déjà bcp mieux !

17/10/2024 à 08:19

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