Membre depuis le 28/01/2024
Salut. Si
await
est haut etsvctm
bas, ça sent le file system ou le scheduler I/O. T'as quoi comme FS et quel scheduler est actif sursdb
?cat /sys/block/sdb/queue/scheduler
pour voir. Et la taille des queues du FS genreio_setup
ounr_requests
si c'est du blk-mqMembre depuis le 30/05/2019
Et regarde aussi le nombre d'inodes libres sur tes FS. Un manque d'inodes peut causer des latences bizarres pour les écritures de petits fichiers ou des créations/suppressions fréquentes. Ça impacte le temps que le système met à trouver un bloc libre
Membre depuis le 03/09/2024
ok pour le scheduler c'est
mq-deadline
(par défaut je crois), et le FS c'est duext4
. Inodes libres j'ai check c'est ok. Pour les queues, je suis en blk-mq, la queuenr_requests
est à 256. Ça me semble pas déconnant. Mais le fait queawait
soit 450ms etsvctm
8ms c'est vraiment chelouMembre depuis le 28/01/2024
Le
await
est le temps d'attente moyen des requêtes incluant le temps en queue,svctm
c'est le temps de service réel du device. Un gros écart comme ça indique que les requêtes attendent beaucoup dans la queue I/O avant d'être traitées. Leaqu-sz
(average queue size) à 50 confirme ça. Essaye de passer le scheduler ennone
si tu utilises un RAID hardware ou si t'es sur du NVMe ultra rapide, des fois le scheduler fait plus de mal que de bienMembre depuis le 14/03/2020
Si t'es sur une VM, la couche de virtualisation peut aussi introduire des soucis. T'es sur quel hyperviseur ? Et quel type de disque virtuel ? Virtio-blk ? Virtio-scsi ? Si c'est virtio-blk,
mq-deadline
est pas toujours le meilleur,none
ounoop
peuvent être mieux. et check les métriques i/o au niveau de l'hyperviseur pour voir si le problème vient pas de làMembre depuis le 03/09/2024
C'est une VM oui, sur Proxmox avec des disques VirtIO. Je vais tenter de passer le scheduler à
none
pour voir si ça change quelque chose. On a pas de métriques hyperviseur pour l'instant je vais voir pour en mettre en place. Je redémarre le service postgreSQL pour appliquer le changement et je vous disMembre depuis le 30/05/2019
ouais sur virtio
none
est souvent le meilleur choix car le scheduler est déjà géré par l'hyperviseur ou le storage backend. Double scheduler ça fait double peineMembre depuis le 28/01/2024
Exactement. Et vérifie aussi l'alignement des partitions du FS par rapport aux blocs du disque physique et du RAID. Des misalignements peuvent pénaliser les performances I/O, surtout pour les écritures
Membre depuis le 03/09/2024
MILLE MERCIS !! Le passage à
none
sur le scheduler a fait chuter l'await à des valeurs normales (genre 2-3ms). Le serveur respire enfin et PostgreSQL est content. C'était bien ce foutu double scheduling qui foutait la merde. Content de l'avoir trouvé !Vous devez être connecté pour poster un message !
Recevoir les derniers articles gratuitement en créant un compte !
S'inscrire
foucher-amelie
Membre depuis le 03/09/2024
Salut la tech ! J'ai un serveur de base de données (PostgreSQL) qui se plaint de latences I/O monstrueuses, genre plusieurs centaines de ms pour des écritures qui devraient être en ms. J'ai checké le disque physique, pas d'erreurs SMART, RAID ok.
iostat
me montre des%util
élevé (90%+) mais desw/s
etr/s
pas délirants (quelques centaines). Le CPU est pas saturé. C'est comme si le disque est occupé à rien faire. Des idées pour creuser ?