performances disque en vrac sur VM linux nvme cloud

Posté par auguste30 le 04/09/2024
RÉSOLU

auguste30

Membre depuis le 01/10/2023

salut la compagnie j'ai des vms ubuntu sur aws (genre c5n.xlarge avec des disques nvme) qui sont censées avoir des perfs i/o de ouf mais en pratique je galère. mes applications ont des latences de dingue sur les accès disque alors que les métriques ebs dans cloudwatch montrent rien d'anormal (iops et throughput sont loin des limites)

# test iperf (simplifié)
fio --name=test --ioengine=libaio --iodepth=64 --rw=randwrite --bs=4k --size=1g --numjobs=1 --direct=1 --fsync=1 --filename=/mnt/data/fio_test.img

le test fio me donne des IOPS ridicules pour du NVMe moins de 10k alors que je devrais être à des centaines de milliers

Commentaires

maillet-elodie

Membre depuis le 21/07/2024

hello ! première chose à vérifier c'est la version du kernel et si tu as les drivers NVMe qui vont bien. et assure-toi que ton système de fichiers (ext4 xfs) est monté avec les bonnes options genre noatime ou nodiratime pour réduire les writes métadata. et le scheduler I/O ? deadline cfq noop ?

vmichel

Membre depuis le 21/07/2024

en parlant de scheduler pour du nvme le noop est souvent le meilleur car le scheduler est déjà dans le hardware. check cat /sys/block/nvme0n1/queue/scheduler. si c pas noop mets-le via echo noop > /sys/block/nvme0n1/queue/scheduler

fboyer

Membre depuis le 21/07/2024

fio c'est bien mais assure-toi que tu testes la bonne chose. ton --iodepth=64 c'est ok pour le parallélisme mais le --fsync=1 peut plomber tes perfs si tu as un souci de cache écriture ou de disque en arrière-plan. essaie sans fsync pour voir le throughput max du disque brut

rossi-olivie

Membre depuis le 20/04/2024

et t'as des snapshots réguliers ou backups en cours sur cet EBS ? même si tu ne vois rien dans cloudwatch des opérations de maintenance ou de snapshot peuvent impacter les perfs de manière transparente pour l'utilisateur des fois

auguste30

Membre depuis le 01/10/2023

j'ai checké le scheduler il était en mq-deadline je l'ai mis à noop ça a un peu aidé mais c'est pas encore ça. et les options de mount sont ok. sans fsync les perfs sont un peu meilleures mais toujours loin du compte. pas de snapshots en cours

maillet-elodie

Membre depuis le 21/07/2024

ok si le scheduler et les options de mount sont bons et pas de fsync qui ralentit alors c'est peut-être la taille du bloc. si ton application écrit en très petits blocs (ex 512B) mais que le disque est optimisé pour des 4K ça fait bcp d'overhead. essaie de faire ton fio avec des bs=8k ou bs=16k pour voir

auguste30

Membre depuis le 01/10/2023

c'était ça ! mon application faisait des writes en 1k. en passant le bs de fio à 4k puis 8k j'ai vu les IOPS monter en flèche. j'ai revu la taille des buffers de mon app et maintenant c le jour et la nuit. merci à tous pour votre aide précieuse

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