17 commentaires
on est en IORING_SETUP_SQPOLL c'est censé être le plus perf j'ai vérifié le code de pg le pooler kernel thread est actif
c'est bien none déjà vérifié mais j'ai un doute sur le nr_requests combien de requêtes tu laisses en vol pour les async i/o
oui wal_sync_method = fdatasync et full_page_writes = on c le setup classique pour la durabilité. on peut pas y toucher
on a des samsung pcie gen4. je suis à 128 pour nr_requests pour l'instant je vais essayer de monter ça
non pas encore j'avoue je savais même pas pour ce fichier. je vais regarder ça
bonne piste pour les dirty pages. on a 256GB de RAM sur le serveur et les ratios sont à 10%/20% donc 25GB de dirty pages ça peut être énorme
ok j'ai mis vm.dirty_background_ratio = 2 et vm.dirty_ratio = 5. les écritures sont un peu mieux mais toujours pas le gain espéré avec io_uring
io_uring est pas toujours un gain pour des workloads avec beaucoup de fsync ou fdatasync si tu fais beaucoup de petites écritures aléatoires O_DIRECT peut être plus simple ou même l'approche classique mmap. et pour pgsql la taille des WAL segments ça joue aussi
ok on va revoir la strat. je pense qu'on va revenir à un pgsql vanilla et voir les perf avec le fdatasync normal. le gain io_uring est peut être pas pour notre workload ou alors c'est trop de tweaking kernel. merci pour toutes les idées c'était super utile
Laisser une réponse
Vous devez être connecté pour poster un message !
Salut à tous. On a migré nos bases pgsql sur des NVMe en utilisant io_uring via un custom build de pg. on s'attendait à des perfs de malade mais au lieu de ça les writes sont ultra lents les
fsyncprennent des plombes. j'ai un doute sur la config kernel ou io_uringuname -a: Linux myhost 5.15.0-xx-generic #yy-Ubuntu SMP ... x86_64 x86_64 x86_64 GNU/Linux