/etc/sysctl.conf
este de obicei analizat de Systemd în Ubuntu la pornire (cred că prin systemd-sysctl.service
). De la WSL nu folosește Systemd, nu este „tratată” atunci când închideți și reporniți subsistemul WSL. Acest lucru este similar cu ceea ce descriu în răspunsul meu la această întrebare Stack Overflow (nu este nevoie să-l citiți acum, dar are mai multe detalii dacă aveți nevoie).
Soluția (de asemenea, așa cum am descris în acel răspuns special) este să folosiți kernelCommandLine
setare pentru nucleul WSL2:
În Windows-ul tău %userprofile%
director (de obicei C:\Users\<nume utilizator>
) creați sau editați fișierul .wslconfig
cu urmatoarele:
[wsl2]
kernelCommandLine = "sysctl.vm.swappiness=10"
Ieșiți din Ubuntu pe WSL (și orice altă instanță WSL)
Problema a wsl --oprire
din PowerShell, CMD sau din meniul Start
Repornire
Ar trebui să găsești asta vm.schimbări
acum persistă. Rețineți că, deoarece toate sesiunile WSL2 au același nucleu, această opțiune va avea efect la nivel global. Acesta este cazul, indiferent de modul în care setați swappiness (sau orice parametru al nucleului).
Rețineți, de asemenea, că acest lucru a fost testat încă din cel puțin Windows 10 build 18363 de către OP-ul acelei întrebări Stack Overflow.
Alte alternative
eu cred ca .wslconfig
Opțiunea este probabil cea mai bună pentru aceasta, dar ați putea, de asemenea:
- Utilizare
/etc/wsl.conf
cu [boot]
secțiunea pe Windows 11 pentru a forța sysctl
să ruleze la fiecare pornire.
- Utilizați profilul dvs. de utilizator pentru a-l rula manual. Dacă mergi pe acest traseu, folosește ceva de genul
wsl.exe -u root sysctl --system
pentru a evita să tastați o parolă sau să configurați sudoeri
.