Linux 7.0 et PostgreSQL sur ARM64 - analyse d'une régression
Pourquoi pgbench chute presque de moitié sur Linux 7.0-rc avec ARM64, et quoi vérifier avant la mise en production.
Linux 7.0 et PostgreSQL sur ARM64 - analyse d’une régression
Dans la branche de test Linux 7.0, une régression importante a été observée par Salvatore Dipietro (Amazon): sur PostgreSQL (pgbench simple-update), la performance sur ARM64 chute presque de moitié (LKML).
D’après les chiffres publiés, le résultat passe d’environ 98 565 à 50 751 opérations. Comme Linux 7.0 est en phase finale de validation (v7.0-rc6), ce sujet concerne directement les admins et les équipes dev (kernel.org).
Ce qui a cassé
La cause principale est liée à l’ordonnanceur (commit, analyse LKML):
- le mode de préemption par défaut est passé de
PREEMPT_NONEàPREEMPT_LAZYsur les architectures concernées, - PostgreSQL en user space passe alors beaucoup plus de CPU dans
s_lock()(jusqu’à 55% du temps CPU selon l’analyse publiée), - la conséquence est une baisse nette du débit et de la réactivité sous charge OLTP typique.
C’est un exemple classique: un changement kernel peut impacter fortement une application, même sans modification du code applicatif.
Pistes de correction discutées
Deux approches ressortent des échanges:
- Revenir à un comportement par défaut proche de
PREEMPT_NONEpour corriger la régression côté noyau (proposition de patch). - Adapter PostgreSQL aux mécanismes récents du noyau (dont
rseq slice) pour réduire la probabilité de préemption en section critique (réponse de Peter Zijlstra, thread rseq slice).
En clair: rollback côté kernel ou adaptation côté user space. Le même arbitrage est aussi souligné côté OpenNET, avec la décision finale attendue côté mainteneur principal (OpenNET).
Pourquoi c’est important en production
- PostgreSQL est l’un des SGBD les plus déployés en production.
- ARM64 n’est plus un segment de niche: cloud, edge et serveurs généralistes.
- Une chute proche de x2 en fin de cycle de release est un vrai risque prod, pas une micro-variation.
Ce que je recommande avant migration
Avant de passer à Linux 7.0 (ou à une distribution qui l’intègre):
- exécutez votre profil
pgbenchréel sur ARM64, - comparez les résultats entre votre noyau actuel et 7.0-rc,
- surveillez les workloads lock-heavy et la latence p95/p99,
- n’acceptez pas la migration prod sans benchmark direct sur votre charge.
Il n’existe pas de réponse universelle du type “on met à jour partout”. La bonne séquence est: mesurer sur votre workload, puis déploiement progressif.


