Puncte:1

Gestionați automat schimbul/memoria

drapel bd

Când am umplut toată memoria și am schimbat experiența în ultimii ani a fost că:

  • Windows și macOS merg „oh, hai să rezolvăm asta pentru tine” și apoi, probabil, măresc dimensiunea de schimb. Deschidere de ex. 30 de file YouTube încetinesc lucrurile pentru un timp, dar, în general, pot folosi în continuare cursorul dacă vreau să anulez procesul, iar după aceea restul sistemului (nu neapărat aplicația ofensătoare) este aproape la fel de receptiv ca întotdeauna.

  • Ubuntu (21.04) spune „Îmi pare rău, nu puteți interacționa cu computerul în următoarele zece până la treizeci de minute”.Pe același hardware și același browser, pot deschide 30 de file YouTube și pot urmări întregul sistem blocat. Toată memoria și schimbul sunt epuizate, iar cursorul nu este doar lent, ci și blocat pe loc. Nu pot interacționa în mod semnificativ cu restul sistemului.

Diferența pare să fie că Ubuntu nu rezolvă niciodată situația, își păstrează constantă dimensiunea de schimb și, în consecință, se blochează la fiecare cinci secunde, pentru totdeauna. Până când, adică, apare un eșec catastrofal și Firefox dispare fără urmă – ceva care practic nu se întâmplă niciodată în alte sisteme de operare. Cel mai important aspect este că nu pot interacționa cu restul sistemului.

Nu știu, dar am impresia că aceasta nu ar fi o problemă dacă mărimea swap-ului ar fi mărită în funcție de cerere. Cum se realizează asta? Există cumva un management mai bun al memoriei?


Actualizare de testare

După ce (nu atât de repede) am făcut testul rapid sugerat în comentarii, unde am dublat dimensiunea fișierului de schimb, pot concluziona că face toată diferența din lume. Sistemul a rămas receptiv în timpul aceleiași încărcări. Pot doar concluziona că o dimensiune de schimb adaptivă ar atenua problema descrisă.

$ gratuit -h
              total folosit gratuit partajat buff/cache disponibil
Mem: 3.7Gi 3.1Gi 129Mi 374Mi 566Mi 105Mi
Schimbare: 4.0Gi 3.0Gi 988Mi

$ sysctl vm.swappiness
vm.swappiness = 60

$ swapon -s
Nume fișier Tip Dimensiune Folosit Prioritate
/swapfile_4G.img fișier 4194300 3180664 20

O notă despre hardware

Unul dintre punctele de vânzare ale Ubuntu (printre altele) este obținerea de asistență continuă și creșterea duratei de viață a hardware-ului mai vechi, care include mașini cu memorie totală mai mică decât media. Nu este absurd de puțină memorie, așa cum demonstrează faptul că alte sisteme de operare se pot descurca bine, doar mai puțin decât media. Multe dintre aceste mașini nu pot fi actualizate.

4 GB RAM funcționează bine pentru majoritatea cazurilor de utilizare. În Ubuntu, în Windows, în macOS. Ceea ce pare să funcționeze bine doar în Windows și macOS, este atunci când utilizați tot spațiul de schimb alocat.

Pe scurt, în aceeași clipă în care soluția de a face Ubuntu să ruleze decent devine „cumpărați hardware nou”, tot scopul rulării devine discutabil pentru toate aceste mașini. Actualizarea hardware-ului este în afara domeniului de aplicare al acestei întrebări.

Cerințele pentru ediția standard a Ubuntu este de 4 GB de memorie.

Zanna avatar
drapel kr
Comentariile au fost [mutate în chat](https://chat.stackexchange.com/rooms/126367/discussion-on-question-by-andreas-automatically-manage-swap-memory) (în speranța de a readuce atenția asupra întrebării despre it/cum pot fi obținute efectele „schimbări adaptive” pe Ubuntu)
Puncte:1
drapel in

Nucleul Linux este... incert în ceea ce privește suportul pentru swap. Swap este un cetățean de clasa a doua, din perspectiva multor dezvoltatori. Ceea ce vreau să spun prin asta este că algoritmul folosit pentru a scoate și a prelua paginile este destul de simplu și se poate defecta atunci când există o mulțime de pagini utilizate frecvent.

O soluție decentă ar fi probabil să folosiți zswap. Acest lucru face este să setați o bucată de memorie să fie memorie comprimată, în care paginile sunt ejectate. Pentru a face acest lucru, editați parametrii de pornire a kernelului de adăugat zswap.enabled=1 zswap.compressor=lz4 zswap.max_pool_percent=20 zswap.zpool=z3fold. Cel mai simplu mod de a face acest lucru pe un sistem Ubuntu este să îl adăugați la /etc/default/grub dosar, ca parte a GRUB_CMDLINE_LINUX_DEFAULT cheie. Acest lucru va crește efectiv cantitatea de date care pot fi stocate în RAM, reducând IO pe disc și prevenind blocările.

În cele din urmă, întrebați dacă aveți mai mult spațiu de schimb creat dinamic. Linux este pe deplin capabil să adauge și să elimine fișiere de schimb după bunul plac, ceea ce înseamnă că un script ar putea verifica disponibilitatea schimbului și apoi poate adăuga fișiere de schimb dacă este necesar. Cu toate acestea, nu are mare rost în acest sens dacă folosiți foarte des spațiul de schimb complet.

Pentru a mări spațiul de swap (fără a vă repartiționa discul), puteți utiliza un fișier de swap. Pentru a face acest lucru, alergați sudo dd if=/dev/zero of=/swapfile count=1M bs=1024 status=progres, care copiază 1 milion de blocuri de 1024 de octeți (adică 1 gigaoctet) într-un fișier. Apoi, fugi sudo chmod 0600 /swapfile și sudo mkswap /swapfile pentru a pregăti fișierul pentru utilizare ca swap. Adăugați-l în /etc/fstab pentru a-l avea întotdeauna disponibil, adăugând următoarea linie la acel fișier: /swapfile swap swap implicite 0 0. Pentru a finaliza procesul, sunați sudo swapon -a, care activează fișierul de schimb.

Sursa: Eu însumi folosesc fișierele swap și zswap și am făcut referire la bash_histroy și la wiki-ul Arch pentru comenzi.

drapel bd
Vă mulțumesc pentru un răspuns relevant.Tocmai am încercat alocarea dinamică a spațiului de schimb folosind pachetul `swapspace` ușor disponibil, așa cum este sugerat într-un comentariu, și m-am gândit că acum aș arunca o privire la sugestia ta de compresie a memoriei. Totuși, sistemul în cauză are deja un proces numit `zswap-shrink` care rulează -- nu sunt sigur dacă asta indică faptul că zswap este activat în vreun fel.
drapel bd
O întrebare: există vreo modalitate de a confirma că compresia memoriei funcționează după ce o activez? Cel puțin pare complet transparent în măsura în care de ex. monitorul sistemului merge.
Calum McConnell avatar
drapel in
Pe baza [acest răspuns](https://unix.stackexchange.com/a/412760/450166), cel mai simplu mod este âsudo grep -R /sys/kernel/debug/zswapâ. Grep este folosit deoarece fișierele din arborele /debug/ nu sunt vizibile de utilizator, așa că extinderea shell-ului nu va funcționa. De asemenea, adaugă etichete de fișiere lângă fiecare dintre numere, făcând lucrul cu adevărat lizibil.
drapel bd
Mulțumesc. Ați vrut să omiteți expresia regex (`.`)? Fără el se întâmplă lucruri ciudate :) Cu ea primesc statisticile, totuși totul este zero chiar și la 93% RAM și 40% utilizare swap. Nu sunt sigur cum să interpretez asta
Puncte:0
drapel bd

După cum a fost menționat într-un comentariu al lui @Terrance Spațiu de schimb este o soluție la această problemă.

apt install swapspace

Acum tot ce aveți nevoie pentru a menține controlul asupra sistemului dvs. este spațiu de stocare gratuit. Testat și lucrări.

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.