16 commentaires
hmm io_uring c'est super mais faut voir la version de ton kernel. 5.15 c'est ok mais t'as vérifié les sysctls pour io_uring? genre /proc/sys/fs/io_uring/max_submission_entries. et t'as checké pg_stat_io pour voir où sont les latences, read/write data/wal
le truc c'est que io_uring c'est super pour les I/O async mais postgres se repose beaucoup sur fsync pour la durabilité. si tes fsync sont lents io_uring va pas magiquement les accélérer. ça pourrait être un souci de writeback du kernel.
t'as essayé un strace -p pid_du_postgres pour voir les appels io_uring_enter et les fsyncs? et checke tes sysctls vm.dirty_background_ratio et vm.dirty_ratio. si c'est trop haut le kernel garde trop de pages sales en RAM et quand il flush c'est la cata
c quelle marque ton NVMe? et le firmware à jour? des fois certains contrôleurs ont des pbs avec io_uring sous charge. c rare mais ça arrive.
on dirait un problème de réglage entre le comportement de pg qui veut la durabilité et le kernel qui gère le writeback. ptete tenter de réduire vm.dirty_background_bytes et vm.dirty_bytes à des valeurs fixes plus petites. genre 512mb pour background et 1gb pour dirty. ça force le kernel à flusher plus souvent mais en plus petites quantités.
exactement. l'idée c'est de lisser le trafic I/O. io_uring peut gérer plein de petites ops concurrentes c'est son avantage. mais si un fsync unique doit écrire des dizaines de gigas au disque ça va bloquer même avec io_uring pour les writes non fsyncés
nickel. et pour aller plus loin tu peux regarder les cgroups pour le i/o throttling si tu as des briques qui se disputent le disque. mais c une autre bataille
Laisser une réponse
Vous devez être connecté pour poster un message !
salut les gars on a upgradé nos PG vers 14 et activé io_uring pour les I/O async. au début c'était top mais sous forte charge de requêtes on se prend des latences I/O de ouf. des fois ça monte à 500ms pour des reads ou writes. pourtant le disque est un NVMe ultra rapide. on s'attendait à mieux.
on est sur un kernel 5.15