7 points par GN⁺ 24 일 전 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • Une grave régression de performances a été découverte par des ingénieurs d’Amazon/AWS sur le noyau de développement Linux 7.0 : le serveur de base de données PostgreSQL voit son débit tomber à environ la moitié de celui observé avec le noyau précédent
  • Mesuré sur des serveurs Graviton4, Linux 7.0 n’offre qu’environ 0,51x le débit du noyau précédent, la cause étant identifiée comme un temps bien plus important passé dans les spinlocks en espace utilisateur
  • L’origine de la régression est un changement introduit dans Linux 7.0 concernant la restriction du mode de préemption du noyau ; un patch rétablissant PREEMPT_NONE comme valeur par défaut a été soumis, mais ses chances d’adoption restent incertaines
  • L’auteur initial, Peter Zijlstra, estime qu’au lieu de modifier le noyau, il faudrait adapter PostgreSQL pour exploiter l’extension de tranche de temps de RSEQ (Restartable Sequences)
  • La version stable de Linux 7.0 est attendue dans environ deux semaines et doit aussi servir de noyau de base à Ubuntu 26.04 LTS, ce qui fait craindre une dégradation de performances à grande échelle jusqu’à l’adaptation de PostgreSQL

Découverte du problème et ampleur

  • L’ingénieur Amazon/AWS Salvatore Dipietro a signalé une régression du débit et de la latence de PostgreSQL
  • Sur la base de mesures effectuées sur des serveurs Graviton4, Linux 7.0 ne fournit que 0,51x le débit du noyau existant
    • La cause a été identifiée comme un temps nettement plus important passé dans les spinlocks en espace utilisateur

Cause de la régression : restriction du mode de préemption

  • Après bisect, le changement responsable a été identifié : la limitation du mode de préemption du noyau dans Linux 7.0
  • Ce changement, intégré dans le cadre des mises à jour de l’ordonnanceur de Linux 7.0, a été mis en place pour les architectures CPU récentes en ne conservant que les modes de préemption Full et Lazy

Patch soumis et réaction des mainteneurs du noyau

  • Un patch rétablissant PREEMPT_NONE comme mode de préemption par défaut a été soumis sur la mailing list du noyau Linux en raison de la gravité de la régression
  • Cependant, Peter Zijlstra, auteur du code d’origine, s’oppose à l’acceptation de ce patch et affirme que la solution consiste à ce que PostgreSQL exploite l’extension de tranche de temps de RSEQ (Restartable Sequences)
    • L’extension de tranche de temps RSEQ est elle aussi une fonctionnalité incluse dans Linux 7.0
    • Zijlstra explique que « cela permet de limiter l’exposition à la préemption du détenteur du verrou »

Portée de l’impact et calendrier de sortie

  • Si cette position est maintenue, les performances de PostgreSQL pourraient fortement se dégrader dans certains scénarios sur la version stable de Linux 7.0 tant que PostgreSQL n’aura pas été mis à jour
  • La version stable de Linux 7.0 est attendue dans environ deux semaines
  • Linux 7.0 doit servir de noyau de base d’Ubuntu 26.04 LTS, dont la sortie est prévue fin avril, ce qui laisse penser qu’Ubuntu 26.04 LTS pourrait subir le même impact

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.