# Mémoire élevée de VmmemWSL : identifier la charge avant de récupérer la RAM

`VmmemWSL` dans le Gestionnaire des tâches représente les ressources utilisées par l'environnement de machine virtuelle WSL. Sa mémoire peut inclure des charges Linux actives et du cache. Si Docker, un serveur de modèles IA ou des outils de développement y fonctionnent, fermer un éditeur Windows n'arrête pas nécessairement ce travail.

Déterminez d'abord si la mémoire appartient à une tâche en cours ou reste en cache après la fin de la tâche. Supprimer un disque virtuel WSL n'est pas une solution au problème de mémoire et peut détruire l'environnement Linux et ses données.

## Identifier le travail à l'intérieur de WSL

Depuis PowerShell, inspectez l'environnement installé :

```
wsl --version
wsl --list --verbose
wsl --list --running
```

Dans la distribution Linux concernée, utilisez ces vues en lecture seule :

```
free -h
ps -eo pid,comm,rss --sort=-rss
```

Les relevés Linux n'ont pas exactement la même portée que le total de la machine virtuelle dans le Gestionnaire des tâches. Utilisez-les pour localiser les processus et distinguer la mémoire disponible du cache de fichiers, sans forcer chaque chiffre à correspondre. Pour le travail géré par Docker, inspectez les conteneurs en cours d'exécution dans Docker Desktop et arrêtez la tâche visée par son contrôle habituel.

Un serveur IA peut garder un modèle chargé après avoir répondu. Arrêtez cette charge délibérément si elle n'est plus nécessaire. Ne tuez pas un processus arbitraire simplement parce que son nom ne vous est pas familier.

## Lire un échantillon de mémoire Linux sans qualifier chaque cache de fuite

Dans la sortie `free -h`, faites attention à `available` ainsi qu'à `used` et `buff/cache`. Linux utilise la mémoire autrement inactive pour les données de fichiers, et une partie de cette mémoire peut être récupérée lorsque les applications en ont besoin. Une valeur `free` faible ne suffit donc pas à établir que Linux est à court de mémoire.

La liste des processus indique le RSS en KiB, tandis que `free -h` utilise des unités lisibles par l'humain. Les pages partagées et la surcharge de la VM font aussi que la somme des lignes de processus n'égale pas nécessairement le chiffre VmmemWSL du Gestionnaire des tâches. Utilisez les lignes les plus importantes pour identifier le propriétaire, puis inspectez la charge de travail nommée, plutôt que de forcer les totaux à correspondre.

Si Docker est impliqué, ces commandes en lecture seule identifient les conteneurs en cours d'exécution et prélèvent un échantillon de ressources, conformément à la [référence Docker stats](https://docs.docker.com/reference/cli/docker/container/stats/) :

```powershell
docker ps
docker stats --no-stream
```

Exécutez-les dans l'environnement connecté au backend Docker étudié. Un contexte Docker différent peut décrire une machine distante, vérifiez donc la cible avant d'agir. Le chiffre de mémoire affiché pour un conteneur et le total de la VM WSL entière ont des portées différentes.

Comparez trois états : avant le démarrage de la tâche d'IA, pendant son exécution et après que l'application a normalement déchargé son modèle ou arrêté la tâche. Si le processus volumineux reste actif, la récupération du cache ne remplace pas la décision de savoir si ce processus doit continuer à s'exécuter. Si le processus diminue mais que le cache demeure, le comportement de récupération devient une question plus pertinente.

## Vérifier le réglage de récupération actuel

La [référence de configuration WSL](https://learn.microsoft.com/en-us/windows/wsl/wsl-config) de Microsoft place les paramètres globaux de WSL 2 dans `%USERPROFILE%\.wslconfig`. Ce fichier est différent de `/etc/wsl.conf` à l'intérieur d'une distribution.

La référence actuelle liste `autoMemoryReclaim` sous `[experimental]`, avec `dropCache` comme valeur par défaut et `gradual` comme autre mode pris en charge. Les anciens conseils invitant à activer une valeur par défaut universellement désactivée peuvent donc être obsolètes. Vérifiez la version de WSL installée et votre configuration existante avant d'ajouter quoi que ce soit.

Si vous souhaitez délibérément une récupération progressive du cache sur une version prenant en charge ce réglage, fusionnez cette entrée dans le fichier existant :

```
[experimental]
autoMemoryReclaim=gradual
```

N'écrasez pas de réglages sans rapport et ne créez pas de sections en double. Cela modifie la façon dont la mémoire mise en cache est récupérée ; cela ne réduit pas les besoins en mémoire d'un modèle ou d'une base de données actifs. Comparez la même charge de travail avant de décider de conserver la modification.

## Modifier la configuration existante et garder un moyen de revenir en arrière

Ouvrez `%USERPROFILE%` dans l'Explorateur de fichiers et activez l'affichage des extensions de noms de fichiers avant de créer ou de modifier `.wslconfig`. Un fichier accidentellement enregistré sous `.wslconfig.txt` n'est pas la configuration voulue. Copiez d'abord une configuration existante vers une sauvegarde et conservez les sections sans rapport avec la mémoire.

Sous une section `[experimental]` existante, ne modifiez que l'entrée de récupération testée. Un nouveau fichier n'est nécessaire que si aucune configuration n'existe et qu'un changement de réglage intentionnel se justifie. N'ajoutez pas à la fois des lignes `dropCache` et `gradual` et ne dupliquez pas la section après avoir copié des exemples provenant d'articles différents.

La valeur par défaut documentée par Microsoft récupère déjà le cache. La remplacer par `gradual` est une expérience de politique, pas une amélioration qui économise toujours plus de mémoire. Elle peut laisser le cache résident plus longtemps qu'une récupération immédiate. Si aucun problème n'est démontré avec le comportement actuel, laissez la valeur par défaut en place et étudiez plutôt la charge de travail active.

Après avoir appliqué un changement au moyen d'un redémarrage sûr de WSL, répétez la même tâche et observez la réactivité de Windows, la mémoire disponible sous Linux et si la tâche s'achève. Si le changement n'est pas utile, restaurez l'entrée précédente depuis la sauvegarde, puis appliquez cette restauration avec les mêmes précautions d'enregistrement et de redémarrage. N'effacez pas toute la configuration pour supprimer une seule ligne expérimentale.

## Redémarrer WSL uniquement après avoir sauvegardé son travail

Les modifications de configuration s'appliquent au redémarrage de l'environnement WSL. Les [commandes de base](https://learn.microsoft.com/en-us/windows/wsl/basic-commands) de Microsoft documentent la commande d'arrêt global :

```
wsl --shutdown
```

Avant de l'utiliser, sauvegardez les fichiers, arrêtez les tâches d'entraînement ou d'inférence et arrêtez normalement les conteneurs ou bases de données concernés. La commande arrête toutes les distributions en cours d'exécution et la machine virtuelle WSL 2, y compris le travail derrière Docker Desktop. Ce n'est pas un bouton de réduction sélective de la mémoire.

Si la mémoire de VmmemWSL disparaît après l'arrêt, cela confirme que l'environnement arrêté en était propriétaire. Cela ne permet pas de distinguer une fuite d'une tâche active ou d'un cache utile. Redémarrez les services nécessaires et comparez une fois le même travail terminé.

## Utiliser un plafond de mémoire comme budget, pas comme réparation

Le réglage `.wslconfig` `memory` limite la mémoire disponible de WSL 2. Un plafond trop bas peut faire échouer les applications Linux ou provoquer un recours intensif au swap. Il ne supprime pas le besoin d'un programme. Ne le choisissez qu'après avoir mesuré la charge de travail et la RAM dont Windows a aussi besoin, puis vérifiez que l'application se termine correctement.

Les [conseils WSL](https://docs.docker.com/desktop/features/wsl/) de Docker Desktop abordent la récupération de mémoire pour son backend WSL. Conservez la configuration à ce niveau de backend plutôt que d'appliquer des instructions Hyper-V sans rapport.

## Confirmer qu'un plafond de mémoire a réellement pris effet

Si un plafond est nécessaire, placez `memory` sous `[wsl2]` dans la configuration existante. Par exemple, `memory=8GB` signifie une limite de 8 Go, et non 8 Go réservés à chaque distribution. C'est un exemple de syntaxe, pas un budget recommandé pour tous les PC. Plusieurs distributions WSL 2 partagent le budget global de la VM, tenez donc compte de leur travail simultané au moment de le choisir.

Après avoir enregistré votre travail et redémarré WSL, inspectez le total rapporté par `free -h` dans une distribution et comparez-le à la limite prévue, en tenant compte de la surcharge système. Exécutez ensuite le modèle ou la compilation réelle. Un chiffre plus faible dans le Gestionnaire des tâches n'est pas une réussite si la tâche Linux est désormais tuée ou passe son temps à échanger.

Si la limite semble ignorée, vérifiez le compte Windows propriétaire du fichier, son extension, si la distribution cible est bien WSL 2 et si l'ancienne VM s'est complètement arrêtée. Ces vérifications sont plus instructives que d'abaisser répétitivement la valeur. Ne désactivez pas l'échange comme seconde expérience simultanée, car cela change le comportement de la charge de travail lorsqu'elle atteint son budget.

Pour les charges de travail Docker, préservez le comportement normal d'arrêt et de persistance des données de Docker. Fermer un terminal n'arrête pas nécessairement son conteneur, tandis qu'un arrêt global de WSL peut interrompre plusieurs services sans rapport. Enregistrez le travail de base de données et d'entraînement via leurs propres contrôles d'application avant d'appliquer un changement à l'échelle de la VM.

## Garder la RAM et l'espace du disque virtuel séparés

| Problème | Investigation pertinente |
| --- | --- |
| La mémoire augmente pendant une tâche IA | Modèle, contexte et travail Linux simultané |
| Le cache reste après la fin du travail | Comportement de récupération et version de WSL |
| Le PC entier est sous pression | Mémoire et engagement Windows |
| Le fichier de disque WSL reste volumineux | Fichiers et stockage du disque virtuel, pas la RAM |

Le [guide de la mémoire Windows](/fr/windows/blog/windows-high-memory-usage) couvre les relevés côté hôte. Pour la capacité de disque, utilisez le [guide de stockage Docker et WSL](/fr/windows/blog/docker-wsl-disk-space-windows) séparé. N'utilisez jamais `wsl --unregister` comme raccourci de nettoyage : cela supprime une distribution et ses données au lieu de résoudre un relevé de mémoire élevée.


Canonical: https://mole.fit/fr/windows/blog/vmmemwsl-high-memory
