Puncte:4

Swappiness pe WSL2 este resetat la 60

drapel cn

Am încercat recent să instalez Ubuntu pe Windows (WSL2). Am încercat liber comandă și au fost utilizate câteva blocuri de memorie swap. M-am gândit să reduc schimbul, așa că am adăugat intrarea vm.swappiness=10 în /etc/sysctl.conf. Am incercat sa reincarc sysctl.confși părea să funcționeze, Dar când am încercat să închid WSL și să încep o nouă sesiune, schimbul a fost resetat la valoarea implicită de 60.

Ubuntu pe WSL2 suprascrie această setare pentru a o face din nou 60?

heynnema avatar
drapel ru
Indiferent de câtă memorie RAM sau de setarea vm.swappiness, aproape întotdeauna vor fi folosite unele schimburi. Dacă ați văzut doar „câteva blocuri de swap utilizate”, atunci lăsați vm.swappiness în pace.
Deekshith Anand avatar
drapel cn
@heynnema Ei bine, am vrut să spun că schimbul a fost folosit de această declarație. Cu toate acestea, am suficient ram (16 giga, probabil suficient pentru cazul meu de utilizare). La actualizarea sysctl.conf și la reîncărcare, comanda gratuită a arătat că schimbul folosit a fost 0. Deci, schimbarea a funcționat într-un fel. Și nu vreau ca acest lucru să scrie în mod constant sub fișierul de schimb și să-mi uze ssd-ul.
heynnema avatar
drapel ru
Dacă vizionați `free -h`, veți vedea în continuare unele fiind folosite după un timp, chiar dacă ați modificat vm.swappiness. SSD-urile moderne nu se vor uza din cauza schimbului.
Puncte:5
drapel vn

/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.
Deekshith Anand avatar
drapel cn
Remedierea .wslconfig funcționează și a fost testată pe Windows 11! Minunat

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.