linux perf disk i/o sature sur ec2 m5d des idées

carpentier-aurore 16/06/2024
RÉSOLU
carpentier-aurore
Auteur Actif Secouriste
Avatar de carpentier-aurore
carpentier-aurore
Auteur Actif Secouriste

salut les pros du kernel. j'ai un problème de perf i/o sur des instances ec2 m5d (nvme local storage) sur lesquelles on a des bases de données postgres. l'iostat montre que le disque est à 100% busy la plupart du temps mais le débit est pas énorme genre 200MB/s alors que les m5d sont censées taper beaucoup plus. on a monté les volumes avec noatime et des options de performance. le scheduler i/o est en mq-deadline. des pistes pour optimiser ?


# iostat -x 1
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           5.20    0.00    3.50   50.10    0.00   41.20

Device            r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm  svctm  %util
nvme0n1         120.00  1000.00  5000.00  200000.00    0.00    0.00   0.00   0.00  8.00  100.00
16/06/2024 à 13:11

4 commentaires

joseph79
Membre Actif Secouriste
Avatar de joseph79
joseph79
Membre Actif Secouriste

yo le mq-deadline c'est bien mais pour le nvme des fois none ou noop est mieux. essaie de le changer avec echo none > /sys/block/nvme0n1/queue/scheduler et vois si ça change quelque chose. et la taille des blocs de ton filesystem ? si tu as de petits fichiers et un gros block size ça peut être inefficace

17/06/2024 à 11:14
margaret04
Membre Actif
Avatar de margaret04
margaret04
Membre Actif

t'as regardé la queue depth de ton postgres ou de ton app ? si elle est trop faible tu n'envoies pas assez de requêtes i/o en parallèle au disque pour le saturer de manière efficace. et aussi check le swappiness. si tu swap ça flingue les perfs i/o même avec du nvme

18/06/2024 à 11:13
gaillard-bernadette
Membre Actif
Avatar de gaillard-bernadette
gaillard-bernadette
Membre Actif

un truc à ne pas négliger c'est le monitoring des métriques nvme direct via nvme-cli. ça te donnera des infos plus fines sur le disque que iostat. des fois les drivers linux ou le firmware nvme ont des soucis. et les m5d sont partagées entre plusieurs instances sur un même host physique aws attention aux voisins bruyants

19/06/2024 à 07:25
carpentier-aurore
Auteur Actif Secouriste
Avatar de carpentier-aurore
carpentier-aurore
Auteur Actif Secouriste

ok merci pour les tips. après pas mal de tests j'ai switché le scheduler à none c'était un peu mieux. mais le vrai game changer a été d'augmenter la queue depth de postgres et d'ajuster le commit_delay. et le swappiness était bien réglé. maintenant l'iostat est plus cohérent avec les specs de l'instance. merci la team

20/06/2024 à 05:27

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