Latence io_uring aléatoire sur PostgreSQL 15 avec kernel 6.x

wlelievre 27/10/2025
RÉSOLU
wlelievre
Auteur Actif
Avatar de wlelievre
wlelievre
Auteur Actif

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

SHOW wal_writer_delay;
SHOW checkpoint_completion_target;
SHOW random_page_cost;
27/10/2025 à 23:24

14 commentaires

aurore-martineau
Membre Actif
Avatar de aurore-martineau
aurore-martineau
Membre Actif

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?

28/10/2025 à 20:53
wlelievre
Auteur Actif
Avatar de wlelievre
wlelievre
Auteur Actif

iostat ok %util rarement au-dessus de 20% await monte à 300-400ms pendant les pics. queue depth pg est par défaut à 64 je crois

29/10/2025 à 17:53
matthieu-briand
Membre Actif
Avatar de matthieu-briand
matthieu-briand
Membre Actif

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?

30/10/2025 à 13:11
wlelievre
Auteur Actif
Avatar de wlelievre
wlelievre
Auteur Actif

scheduler est mq-deadline. j'ai essayé de baisser la queue depth à 32 mais pas de changement significatif. les pics sont toujours là

31/10/2025 à 07:32
aurore-martineau
Membre Actif
Avatar de aurore-martineau
aurore-martineau
Membre Actif

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?

01/11/2025 à 01:56
wlelievre
Auteur Actif
Avatar de wlelievre
wlelievre
Auteur Actif

les checkpoints sont tous les 5min avec target à 0.9. durent environ 1-2s. rien d'extraordinaire. on dirait que c'est lié au WAL parfois

01/11/2025 à 21:30

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

02/11/2025 à 16:13
wlelievre
Auteur Actif
Avatar de wlelievre
wlelievre
Auteur Actif

ah intéressant! full_page_writes est on. wal_sync_method est fdatasync. ptete que le souci vient des écritures WAL qui attendent trop? j'ai un petit burst d'activité write parfois

03/11/2025 à 11:05
matthieu-briand
Membre Actif
Avatar de matthieu-briand
matthieu-briand
Membre Actif

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?

04/11/2025 à 10:40
wlelievre
Auteur Actif
Avatar de wlelievre
wlelievre
Auteur Actif

même nvme ouais. les param vfs cache sont par défaut. pas de min_free_kbytes custom. dirty_ratio 10% dirty_background_ratio 5%

05/11/2025 à 07:37
aurore-martineau
Membre Actif
Avatar de aurore-martineau
aurore-martineau
Membre Actif

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?

06/11/2025 à 04:53
wlelievre
Auteur Actif
Avatar de wlelievre
wlelievre
Auteur Actif

firmware à jour. par contre j'ai trouvé un patch pour le kernel 6.2 concernant un bug io_uring avec certains nvme sous charge. je vais essayer de recompiler avec ça

06/11/2025 à 23:43
matthieu-briand
Membre Actif
Avatar de matthieu-briand
matthieu-briand
Membre Actif

un patch kernel c'est toujours une bonne piste pour ce genre de truc. bonne chance!

07/11/2025 à 19:48
wlelievre
Auteur Actif
Avatar de wlelievre
wlelievre
Auteur Actif

le patch kernel a résolu 90% des pics de latence! incroyable. j'ai aussi passé la queue depth postgres à 16 pour io_uring. la base respire enfin thx à tous

08/11/2025 à 17:37

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