postgres perf dégueu sous kernel récent io_uring suspect

Posté par rgrenier le 06/12/2025
RÉSOLU

rgrenier

Membre depuis le 15/03/2019

actif

salut tout le monde. j'ai upgrade notre vm postgre sur un kernel linux plus récent et la perf est catastrophique. les requêtes qui prenaient quelques ms prennent des centaines. j'ai checké l'iops la cpu tout est ok. je me demande si c pas io_uring ou un truc dans le sched du noyau

EXPLAIN ANALYZE SELECT * FROM big_table WHERE creation_date < NOW() - INTERVAL '1 month' ORDER BY id DESC LIMIT 100;

Commentaires

kpineau

Membre depuis le 09/06/2024

secouriste

hmm kernel récent c'est quel version ? et postgres aussi. y a eu pas mal de changements sur l'implémentation io_uring et son interaction avec le page cache et les schedulers. t'as vérifié le scheduler disque utilisé

rgrenier

Membre depuis le 15/03/2019

actif

kernel 5.15 vers 6.6. postgres 14. le scheduler est cfq sur les deux. j'ai pas touché

kpineau

Membre depuis le 09/06/2024

secouriste

cfq est déprécié depuis longtemps non ? passe à mq-deadline ou none pour nvme. et cfq peut avoir des soucis avec des workloads mixtes read/write asynchrones qui profiteraient d'io_uring

rgrenier

Membre depuis le 15/03/2019

actif

ah oui merde j'ai pas checké les defaults. ok je tente mq-deadline

kpineau

Membre depuis le 09/06/2024

secouriste

et aussi postgre utilise posix_fadvise pour optimiser le cache. avec io_uring y a des interactions différentes. t'as quoi dans ton postgresql.conf pour effective_io_concurrency et wal_compression

rgrenier

Membre depuis le 15/03/2019

actif

effective_io_concurrency = 1 et wal_compression = off

kpineau

Membre depuis le 09/06/2024

secouriste

ok effective_io_concurrency à 1 c'est pas bon pour les ssd nvme qui peuvent gérer beaucoup plus d'iops concurrentes. essaie de le monter à 100 ou 200. et wal compression on ça aide à réduire les écritures disque

rgrenier

Membre depuis le 15/03/2019

actif

j'ai mis mq-deadline. ça a un peu aidé mais c'est pas encore ça. je vais monter effective_io_concurrency et wal_compression

kpineau

Membre depuis le 09/06/2024

secouriste

si tu utilises beaucoup d'io_uring pour autre chose sur cette machine ça peut rentrer en conflit avec postgres. t'as d'autres applis gourmandes en io sur ce serveur qui feraient des appels système asynchrones

rgrenier

Membre depuis le 15/03/2019

actif

non c'est un serveur dédié postgre. rien d'autre d'important

kpineau

Membre depuis le 09/06/2024

secouriste

y a eu des bugs avec io_uring et certaines versions de libaio ou glibc. assure-toi que tes libs système sont à jour. et est-ce que ton postgres utilise bien o_direct pour certains segments ou tout passe par le cache du système d'exploitation

rgrenier

Membre depuis le 15/03/2019

actif

je crois que c'est le default donc pas de O_DIRECT explicite. juste le cache OS. les libs sont à jour je viens de faire un apt update && apt upgrade

kpineau

Membre depuis le 09/06/2024

secouriste

ça peut être ton fs.aio-max-nr aussi. le max nombre d'opérations aio en attente. si c'est trop bas ça bloque. check cat /proc/sys/fs/aio-max-nr

rgrenier

Membre depuis le 15/03/2019

actif

c'est à 65536. je pense que c'est assez haut

kpineau

Membre depuis le 09/06/2024

secouriste

ok alors. t'as testé avec synchronous_commit = off pour voir si c'est les écritures du wal qui te ralentissent de ouf ? juste pour un test pas en prod

rgrenier

Membre depuis le 15/03/2019

actif

oui j'ai testé en dev ça améliore beaucoup. donc c'est bien l'écriture disque. avec les nouvelles options de mount et effective_io_concurrency à 200 et wal_compression à on c'est beaucoup mieux. j'ai retrouvé des perfs comparables. merci mec !

kpineau

Membre depuis le 09/06/2024

secouriste

nickel ! souvent c'est le combo kernel + config postgres + fs options qui peut te tuer les perfs sur les workloads i/o bound

rgrenier

Membre depuis le 15/03/2019

actif

grave c'était exactement ça. un grand merci tu m'as évité des heures de galère

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