14 commentaires
io_uring c'est génial mais ça peut être un enfer à tuner. t'as regardé les métriques iostat pendant les pics? surtout les await et %util. et quelle est ta queue depth pour io_uring dans postgres config?
64 c'est peut-être trop pour ton workload surtout s'il y a bcp de petites transactions. io_uring aime bien un queue depth plus bas pour l'OLTP. et t'as checké ton scheduler I/O côté kernel? deadline cfq mq-deadline?
mq-deadline c'est bien. est-ce que tu as une activité de checkpointing intense? des fois ça peut générer bcp d'i/o et le kernel galère avec io_uring sur des gros flush. t'as tes logs postgres avec les durées de checkpoint?
io_uring gère pas le WAL encore de base pour postgres. le WAL reste en sync I/O. si t'as des spikes de wal_sync_method ça peut être ça. vérifie tes fsync et full_page_writes
si le WAL est sur le même nvme que les données ça peut se cannibaliser. idéalement le WAL sur un nvme séparé. et t'as des paramètres spécifiques pour le vfs cache? min_free_kbytes ou dirty_ratio?
ok. essaie d'isoler le WAL sur un disque différent pour voir. sinon pour io_uring des fois c'est un bug dans le driver nvme avec le kernel. t'as la dernière version du firmware de tes nvme?
un patch kernel c'est toujours une bonne piste pour ce genre de truc. bonne chance!
Laisser une réponse
Vous devez être connecté pour poster un message !
hello la commu! on a mis en place io_uring pour postgresql 15 sur une infra bare metal (nvme direct) kernel 6.2. la plupart du temps c'est hyper rapide mais on a des pics de latence i/o genre 500ms-1s aléatoirement. les disques ne sont pas saturés cpu ok