Kernel panic sur mmap et corruption de page cache avec PostgreSQL 15

gilbert33 02/04/2026
RÉSOLU
gilbert33
Auteur
Avatar de gilbert33
gilbert33
Auteur

on a un souci tres grave sur un cluster postgresql de prod. le kernel panic de facon aleatoire environ une fois par jour. la trace pointe vers du memory management

on est sur ubuntu 22.04 kernel 5.15. postgresql utilise des huge pages. quand le panic arrive on perd les dernieres minutes d ecriture meme avec le wal sur disque

02/04/2026 à 03:11

14 commentaires

ça sent le bug de driver storage ou une barrette de ram foireuse. poste le panic log complet qui sort de kdump ou de ton serial console

03/04/2026 à 01:34
gilbert33
Auteur
Avatar de gilbert33
gilbert33
Auteur

voila le bout de log que j ai pu recup via netconsole


BUG: unable to handle page fault for address: ffff888123456788
RIP: 0010:__free_pages_ok+0x12/0x250
Call Trace:
  free_unref_page_prepare+0x120/0x1a0
  free_unref_page+0x15/0x70
  __put_page+0x32/0x40
  pagecache_get_page+0x120/0x230
03/04/2026 à 22:33
corinne64
Membre
Avatar de corinne64
corinne64
Membre

le call trace montre clairement que le kernel essaie de liberer une page qui est deja foireuse ou mal mappee dans le page cache. est ce que vous utilisez du zfs ou du xfs

04/04/2026 à 19:08
gilbert33
Auteur
Avatar de gilbert33
gilbert33
Auteur

on est sur du xfs avec un raid10 de nvme samsung. le fs a ete créé avec les options par defaut

on a aussi du transparent hugepages activé par defaut sur cette version d ubuntu

05/04/2026 à 15:25

desactive thp direct. postgresql et thp ça a toujours fait des trucs bizarres surtout sur les operations de compactage memoire en background


echo never > /sys/kernel/mm/transparent_hugepage/enabled
06/04/2026 à 09:47
corinne64
Membre
Avatar de corinne64
corinne64
Membre

je parie sur une race condition entre le mechanisme de copy-on-write de postgres et le kernel. postgres fait des doubles ecritures parfois. vous avez quoi en config de shared_buffers

07/04/2026 à 04:17
gilbert33
Auteur
Avatar de gilbert33
gilbert33
Auteur

shared_buffers est a 128gb sur une machine de 512gb. on a configuré 64000 huge pages de 2mb manuellement dans sysctl

08/04/2026 à 02:08

ton souci vient peut etre de la fragmentation memoire. si le kernel n arrive plus a allouer de pages contigues pour le page cache a cause des huge pages statiques ça peut paniquer si un driver essaie de faire du dma mal foutu

lance un cat /proc/buddyinfo pour voir l etat de tes zones memoire

09/04/2026 à 01:10
gilbert33
Auteur
Avatar de gilbert33
gilbert33
Auteur

resultat de buddyinfo


Node 0, zone Normal 120 54 21 10 5 2 0 0 0 0 0
Node 1, zone Normal 45 32 12 5 2 0 0 0 0 0 0

c est la catastrophe non. les ordres superieurs sont tous a zero

09/04/2026 à 19:38
corinne64
Membre
Avatar de corinne64
corinne64
Membre

ouais ta memoire est completement fragmentee. le kernel ne peut plus sortir une page de plus de 4kb. ton driver de raid ou de reseau doit paniquer quand il demande un buffer contigu pour ses requetes

augmente le min_free_kbytes pour forcer le kernel a garder de la marge


sysctl -w vm.min_free_kbytes=4194304
10/04/2026 à 18:42

et passe ton vm.zone_reclaim_mode a 0 si c est pas deja fait pour eviter que le kernel s excite a essayer de bouger des pages entre les nodes numa en plein milieu d une ecriture disque

11/04/2026 à 17:04
gilbert33
Auteur
Avatar de gilbert33
gilbert33
Auteur

j ai appliqué les reglages. j ai aussi remarqué que le firmware des samsung nvme avait une mise a jour pour des problemes de corruption de donnees sur les gros write buffers

j ai flashé le firmware et rebooté les noeuds

12/04/2026 à 14:23
corinne64
Membre
Avatar de corinne64
corinne64
Membre

le firmware ssd + la fragmentation ram c est le combo gagnant pour un kernel panic. tiens nous au jus si ca replante dans les 24h

13/04/2026 à 12:52
gilbert33
Auteur
Avatar de gilbert33
gilbert33
Auteur

ça fait 48h que ça tourne sans aucun crash. les perfs sont plus stables aussi. merci pour l aide sur buddyinfo j avais jamais regardé ce fichier

14/04/2026 à 10:32

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