Introduction
Depuis son lancement, WSL 2 a transformé la manière dont les développeurs interagissent avec les systèmes de fichiers Windows et Linux. En mai 2026, une amélioration significative a été apportée pour accélérer cet accès, ce qui est une excellente nouvelle pour ceux dont le flux de travail implique des interactions fréquentes entre ces deux environnements.
De DrvFs à virtiofs
WSL 1, lancé en 2016, utilisait DrvFs pour gérer l'accès aux disques Windows via un pilote de système de fichiers personnalisé. Performant pour les charges de travail intensives en fichiers, il permettait un accès quasi direct à NTFS grâce à une couche de compatibilité dans le noyau Windows NT.
Avec WSL 2, introduit en mai 2019, Microsoft a opté pour un noyau Linux complet dans une VM Hyper-V légère, améliorant l'exécution native des charges de travail Linux. Cependant, pour l'accès inter-OS, un nouveau modèle était nécessaire. Microsoft a alors intégré un serveur de fichiers Plan 9 (9P) dans le service WSL côté Windows, ce qui a permis une communication via un socket Hyper-V.
Les limites du protocole 9P
Bien que fonctionnel, le protocole 9P comporte une surcharge de protocole, chaque opération étant limitée par un paramètre de taille de message (msize=65536, 64 KB). Cette limitation est particulièrement notable pour les charges de travail impliquant de nombreux petits fichiers, où chaque interaction subit cette surcharge.
L'avènement de virtiofs
En 2021, virtiofs est apparu en tant qu'option expérimentale, utilisant le transport VirtIO pour un accès aux fichiers en mémoire partagée, réduisant ainsi la surcharge de sérialisation par rapport à 9P. Activer virtiofs se fait dans la section [wsl2] de ton .wslconfig avec virtiofs=true. Depuis, Microsoft a continuellement amélioré cette technologie : amélioration de la réutilisation des dispositifs (PR #40298), support mmap partagé sans DAX (PR #40426), et maintenant la correction du niveau DMA.
La gestion des pools DMA
Les machines virtuelles sur Hyper-V utilisent des buffers de rebond pour le DMA I/O, une région mémoire réservée sous la limite DMA de 4 Go accessible directement par le matériel. Jusqu'à récemment, tous les dispositifs virtio d'une session WSL 2 partageaient un seul pool global, créant des contentions lors d'I/O intensifs.
Grâce à la PR #40654, chaque dispositif virtio dispose désormais de son propre pool DMA dédié, ce qui a été intégré le 27 mai 2026. Cela permet une allocation de plage physique contiguë sous 4 Go au démarrage, publiée via sysfs.
Impact et perspectives
Cette amélioration réduit considérablement la contention, améliorant ainsi les performances pour les utilisateurs avec des charges de travail intensives en I/O. Pour les développeurs, cela signifie une meilleure productivité et un flux de travail plus fluide entre Windows et Linux.
Conclusion
WSL 2 continue de progresser, rendant les environnements de développement hybrides plus efficaces que jamais. Pour ceux qui cherchent à optimiser leur flux de travail entre ces deux mondes, ces améliorations sont une bénédiction.
Discutons de ton projet en 15 minutes.