EN
en direct

Linux 7.4 accélère de 10 à 100 fois le vidage des workqueues sur les gros serveurs

Le 22 octobre 2026, une optimisation de Tejun Heo fusionnée dans Linux 7.4 fait passer le vidage d’une workqueue de 40 000 à 4,2 millions d’opérations par seconde sur une machine à 192 CPU. Si vous exploitez des serveurs à fort nombre de cœurs, cette version vous offre un gain de latence mesurable, sans aucune configuration.

Un long tapis roulant de tri de colis dans un entrepôt sombre, la bande vide qui boucle sur elle-même, un seul colis marqué d’un accent jaune ambre posé sur le bord.

18 octobre 2026. Linux 7.3 sort, et la fenêtre de fusion de Linux 7.4 s’ouvre aussitôt. 22 octobre 2026. Le pull request des workqueues est fusionné, porté par le mainteneur de longue date Tejun Heo. Septembre 2026. Un ingénieur Huawei, Yao Kai, avait signalé qu’une workqueue du CIL XFS passait jusqu’à 64 microsecondes à parcourir des files inutilisées à chaque vidage sur une machine à 128 CPU. La réponse tient en une phrase : ne plus visiter les files qui n’ont pas servi depuis le dernier vidage.

Le gâchis que personne ne voyait

Une workqueue permet au noyau de différer un travail de façon asynchrone : un sous-système dépose une tâche dans une file, et un worker la consomme plus tard. Depuis la refonte des concurrency-managed workqueues dans les années 2010, le noyau distingue deux familles : les files per-cpu, où chaque CPU possède son propre worker pool, et les files unbound, où les travailleurs ne sont pas attachés à un CPU précis. Ces deux familles sont concernées par le correctif, avec des résultats légèrement différents.

Le problème corrigé dans Linux 7.4 n’est pas dans l’exécution du travail, mais dans le vidage (flush) : l’opération qui garantit qu’un travail déposé est terminé avant de continuer. Jusqu’ici, vider une workqueue revenait à parcourir une file par CPU possible, même quand la quasi-totalité de ces files étaient vides et inutilisées. Sur un serveur à 128 ou 192 cœurs, ce parcours à blanc devient mesurable — et c’est exactement ce que XFS subit à chaque force de journal (log force).

Le CIL (commit item list) de XFS regroupe les modifications en attente d’écriture dans le journal. Chaque force de journal — déclenchée par un fsync, une transaction ou une rotation — vidait une workqueue, qui parcourait alors une file par CPU possible. Sur une machine à 128 CPU, le rapport de Yao Kai chiffrait ce parcours à 64 microsecondes par vidage : du temps pur gaspillé, multiplié par le nombre de forces de journal d’une charge transactionnelle soutenue.

Le commit de Tejun Heo résume le correctif : « Flushing a workqueue now visits only the queues used since the last flush instead of one per possible CPU. Idle flushes get 10 to 100 times faster on large machines, which XFS hits on every log force. » Autrement dit, on ne visite plus que les files réellement utilisées depuis le vidage précédent.

Des chiffres qui ne mentent pas

Les mesures du commit donnent l’ampleur du gain. Sur une machine à 192 CPU en deux nœuds :

  • le vidage d’une workqueue per-cpu au repos passe de 40 000 à 4,2 millions d’opérations par seconde ;
  • le vidage d’une workqueue non liée (unbound) au repos passe de 450 000 à 4,3 millions ;
  • avec 16 threads qui déposent un élément puis vident, on passe de 30 000 à 110 000 vidages par seconde en per-cpu, et de 60 000 à 180 000 en unbound.

Les vidages denses — où chaque file est active — restent inchangés en per-cpu, et ralentissent de 15 à 20 % en unbound. Le chemin de dépôt, lui, n’est pas touché. Michael Larabel, de Phoronix, note sobrement qu’un bond de 40 000 à 4,2 millions « est un exploit — surtout en 2026, et sans avoir été écrit par une IA. »

bash
# Savoir si vous êtes concerné : un nombre de cœurs élevé, un noyau < 7.4.
uname -r     # affiche la version — l’optimisation arrive avec 7.4
nproc        # au-delà de 64 cœurs, le parcours à blanc devient coûteux

Une vague d’optimisations dans Linux 7.4

Ce correctif n’est pas isolé. Linux 7.4 concentre plusieurs gains du même ordre, tous sans configuration :

  • la mise à jour slab, fusionnée le 23 octobre, améliore de 24 % un benchmark du sous-système de gestion mémoire ;
  • les patches kbuild de l’ingénieur Arm Lorenzo Stoakes réduisent jusqu’à 70 % le temps de build incrémental du noyau, en supprimant des goulots mono-thread ;
  • le scheduler reçoit des améliorations de latence pour les tâches à tranche courte, et une préférence SMT pour les futurs NVIDIA Vera ;
  • les coredumps par socket Unix gagnent le support sparse, qui peut réduire leur taille à 1 % de la version non éparse.

Ce qui relie ces changements, c’est une même philosophie : la performance de 2026 vient moins du matériel que de la suppression du travail inutile dans le noyau lui-même, souvent révélé par des rapports de flottes massives comme celui de Yao Kai. Un parc à 128 ou 192 CPU expose des coûts que personne ne voyait sur une machine à 16 cœurs.

Ce que cela change concrètement pour vos charges

Le gain se concentre là où on ne le regarde pas : les vidages idle. Une base de données qui force son journal des milliers de fois par seconde, ou un hyperviseur qui synchronise ses périphériques virtuels, passe l’essentiel de son temps dans des workqueues vides — c’est précisément le cas que l’optimisation rend 10 à 100 fois moins coûteux.

Le mécanisme technique mérite d’être souligné parce qu’il est simple et généralisable. Plutôt que de maintenir un index statique « une file par CPU possible », la workqueue conserve désormais la trace des files réellement utilisées depuis le dernier vidage, et ne parcourt que celles-là. Le coût d’un vidage devient proportionnel à l’activité récente, pas à la taille de la machine. C’est un changement de complexité, pas un micro-réglage.

Deux nuances à garder en tête. La première : le gain s’observe sur les machines où le nombre de CPU possibles est grand, typiquement au-delà de 64 cœurs ; en dessous, l’économie est réelle mais négligeable. La seconde : le commit signale une régression de 15 à 20 % sur les vidages denses en mode unbound, un cas que les charges saturées de façon continue doivent surveiller.

Verdict

Si vous exploitez des serveurs à plus de 64 cœurs — bases de données, systèmes de fichiers XFS, hyperviseurs — prévoyez le passage à Linux 7.4 dès sa sortie stable. Le gain est gratuit, sans configuration, et il cible précisément les charges qui souffrent de la latence des log forces XFS et des vidages de workqueues.

Si votre parc est plus modeste, ne forcez pas un backport : le coût d’un vidage à blanc ne devient significatif qu’avec un nombre élevé de CPU. Notez néanmoins trois choses. D’abord, l’optimisation touche aussi les machines virtuelles à grand nombre de vCPU, pas seulement les serveurs physiques. Ensuite, gardez l’œil sur la régression de 15 à 20 % sur les vidages denses en mode unbound : les charges qui saturent leurs files de façon continue méritent un bench avant de basculer en production. Enfin, ce correctif est une raison de plus de suivre les cycles du noyau de près : les gains les plus rentables de 2026 ne s’achètent pas, ils se mettent à jour.

Références

Le brief cyber, chaque mardi

Les failles qui comptent, les correctifs à appliquer, en dix minutes de lecture.

Pas de spam. Désinscription en un clic.
à lire ensuite

Sur le même sujet

Fedora 45 rate son second Go/No-Go et repousse sa sortie au 3 novembre

Le 22 octobre 2026, la réunion Go/No-Go de Fedora déclare un second NO-GO : la distribution ne sortira pas la semaine prochaine, plombée par des bugs bloquants qui touchent la mitigation eMudhra, LVM sur LUKS et KDE Discover. Retenez le 3 novembre comme nouvelle cible, et lisez la liste des blocages comme une leçon de discipline de release.

Linus Torvalds supprime les fonctions insécures __get_user() et __put_user() du noyau Linux, assisté par Claude Code

Le 21 octobre 2026, Linus Torvalds fusionne dans Linux 7.4 la suppression des fonctions __get_user() et __put_user(), des variantes historiques qui ne vérifient pas la plage d’adresses utilisateur et sont donc insécures. Il a rédigé la conversion en partie avec Claude Code, utilisé « comme une sorte de script Coccinelle » : l’IA s’installe dans la maintenance du noyau, y compris pour éliminer des classes entières de bogues mémoire.

← Retour au fil

Tapez au moins deux caractères.

↑ ↓ naviguer ↵ ouvrir esc fermer