Puncte:11

Cached Memory Preia toată memoria

drapel id

Am trecut la Ubuntu cu doar câteva luni în urmă. Acum câteva zile, am aflat că sistemul stochează cache în memorie, care ocupă mult spațiu și, deși beneficiez de memoria cache, acest lucru îmi pune acum probleme.

memorie cache ubuntu

După cum puteți vedea în această imagine, Ubuntu ia mai mult de 50% din RAM-ul meu. În plus, folosesc 23,3% din 11,6 GiB, ceea ce înseamnă că sistemul meu ocupă mai mult de 75-80% din memorie...

Acum, am căutat de multe ori cum îmi pot șterge memoria cache și am găsit asta sincronizare; echo 1 > /proc/sys/vm/drop_caches comanda cu privilegii sudo o poate șterge, dar această comandă a funcționat doar la început, ca atunci când am folosit această comandă și am văzut că am fost stocată în cache și a fost foarte redusă. Dar acum, când îmi văd memoria cache după ce rulez aceasta, rămâne aceeași.

Ma poate ajuta cineva cu aceasta problema?

P.S. Cred că dacă încerc să-mi fac upgrade RAM, asta nu va rezolva această problemă...

drapel in
Aceasta nu este o problemă. Aceasta este prin proiectare. De ce ai RAM dacă nu o folosești? Când sistemul are nevoie de memorie pentru alte scopuri, cum ar fi aplicații și altele, memoria cache va fi amestecată pentru a fi schimbată sau eliminată din memorie pentru a se adapta cerințelor imediate. În caz contrar, sistemul va face ceea ce trebuie pentru a fi rapid și receptiv. Acesta este unul dintre principalele beneficii ale Linux față de un alt sistem de operare, cum ar fi Windows.
Labham Jain avatar
drapel id
Ei bine, nu am nicio problemă la stocarea memoriei cache, vreau doar ca aceasta să fie în limită... Pentru că dacă sistemul ocupă tot spațiul în cache, atunci nu voi putea folosi ram... acum din cauza problemei memoriei cache, Chrome-ul meu îmi arată eroare SIGSEV. iar AVD este întotdeauna nasol.
guiverc avatar
drapel cn
Dacă programele dvs. fac apeluri `malloc()` (alocare memorie) și nu este disponibilă nicio memorie RAM liberă, atunci RAM-ul din cache este alocat, acea parte a memoriei cache este doar pierdută... Nu văd cum vă vor ajuta restricțiile problema, probabil că te-ai concentrat pe problema greșită.. (*opinie*, nu știu codul și citirea mea despre cărțile *linux kernel* a fost cu mult timp în urmă)
Artur Meinild avatar
drapel vn
Aceasta nu este o problemă, ai greșit. Sistemul NU folosește nicio memorie pentru cache care altfel ar fi folosită pentru aplicații. CREDEȚI că aceasta este o problemă, când în realitate nu este.
drapel us
Nu are legătură cu întrebarea: deoarece aveți o mulțime de memorie RAM, luați în considerare trecerea la ZRam în loc de schimbul bazat pe HDD.
drapel ru
Asta este normal. De exemplu, memoria cache a sistemului meu de driver zilnic de 32 GB RAM este de 7,6 GiB din ~31 GiB utilizabili. 7 GB de RAM este utilizat în mod activ de către sistem. Cu memoria cache, ați crede că folosesc 14,6 GB de RAM, când, totuși, folosesc de fapt doar 7 GB de RAM. Cei 7,6 GB de RAM sunt eliberați dacă este nevoie, în caz contrar, este păstrat doar pentru a „accelera” lucrurile de pe discuri, cache-uri, etc. RAM stocată în cache este păstrată până când este nevoie și este eliberată imediat când este nevoie - de fapt nu vă afectează memoria *utilizare* în orice fel.
drapel cn
@LabhamJain Ascultă-te pe tine. Sistemul *folosește* memoria. Vrei să *nu folosească* memoria. Și motivul tău este că, dacă sistemul folosește memoria, „nu va putea folosi ram”. Nu are niciun sens. Doriți ca sistemul să poată folosi memoria RAM, *este* folosind RAM, demonstrând că *este* capabil să o folosească.
drapel gf
SIGSEV este un rezultat al erorii programatorului. Nu are nimic de-a face cu cât de multă RAM este disponibilă sau nu. AVD este întotdeauna nasol atunci când emulează instrucțiunile de armare pe un procesor x86.
drapel cn
@matigo: Windows folosește, de asemenea, memorie „nefolosită” pentru a stoca lucrurile în cache, dar _majoritatea_ dintre interfețele sale ascund acest lucru de utilizator, astfel încât să nu se confuze și să intre în panică.
Labham Jain avatar
drapel id
@OrangeDog Este de fapt o problemă care se întâmplă atunci când Chrome iese din accesul la memorie... așa că ceea ce am vrut să spun prin memoria cache este că sistemul meu ocupă majoritatea ram în cache, așa că, din punct de vedere tehnic, voi putea folosi doar memoria liberă, de ex. 11 gb în total - 6 gb în cache, așa că pot folosi doar 5 gig maxim...
drapel gf
@LabhamJain, așa cum a fost explicat în mod repetat, este greșit
drapel fk
https://www.linuxatemyram.com/ Ramul neutilizat este un ram risipit. Dacă ceva are nevoie de acea memorie, Linux va renunța la orice o folosește deocamdată. Deci nu este o problemă reală
Ruslan avatar
drapel bv
Acum că ați menționat SIGSEGV, aceasta arată ca o [problema XY](https://xyproblem.info).
nulldev avatar
drapel cn
Rețineți că memoria cache nu înseamnă întotdeauna memorie care poate fi aruncată atunci când este nevoie de mai multă RAM. De exemplu, datele din „tmpfs” vor apărea ca „memorie cache”. Cu toate acestea, System Monitor va afișa acest tip de memorie atât ca cache, cât și ca fiind utilizată (deci va fi în porțiunea colorată a diagramei circulare). [Acest lucru m-a mușcat înainte.](https://askubuntu.com/questions/762717/high-shmem-memory-usage)
eckes avatar
drapel cn
Windows are, de asemenea, cache, este doar puțin mai puțin agresiv. @matigo
drapel fr
https://www.linuxatemyram.com - acesta este un clasic ;)
eckes avatar
drapel cn
@OrangeDog da, dar - deoarece un malloc eșuat returnează null, este foarte frecvent ca un program să se blocheze cu SEGV dacă rămâne fără memoria virtuală și nu face o verificare adecvată a returnării, deci există o corelație puternică acolo, de exemplu, codul zip în runtime-ul Java a avut această problemă de ani de zile.
marcelm avatar
drapel cn
@eckes `malloc()` pe Linux în esență [nu returnează niciodată NULL](https://stackoverflow.com/questions/16674370), deci este discutabil.
Puncte:26
drapel bo

dacă sistemul ocupă tot spațiul în cache, atunci nu voi putea folosi ram

Nu este adevarat. RAM stocată în cache nu determină RAM în uz. Tu voi să poată utiliza memoria RAM, de aceea se numește cache â poate fi folosit și aruncat după cum este necesar. De fapt, este exact opusul presupunerii tale. Dacă eliminați memoria cache, nu veți putea folosi ceea ce este stocat în cache.

Acum, am căutat de multe ori cum îmi pot șterge memoria cache, am găsit sincronizarea; echo 1 > /proc/sys/vm/drop_caches comanda cu privilegii sudo o poate șterge, dar această comandă a funcționat doar la început, ca atunci când am folosit această comandă și am văzut că am fost stocată în cache, a fost foarte redusă. Dar acum, când îmi văd memoria cache după ce rulez aceasta, rămâne aceeași.

Trebuie să ștergeți manual memoria cache doar dacă ați dezactivat funcția de schimb. Dezactivarea schimbului nu este recomandat pentru a crește performanța deoarece aceasta reduce de fapt performanța sistemului.

Spre deosebire de Windows, Ubuntu nu se prăbușește la o încărcare RAM grea din cauza diferențelor de gestionare a memoriei. Dezactivarea acestor funcții va reduce semnificativ performanța.

În concluzie, RAM stocată în cache nu este RAM în uz și nu vă maximizează RAM sau nu scad performanța sistemului, deoarece RAM stocată în cache este eliminată automat după cum este necesar. Dimpotrivă, memoria cache a memoriei crește performanța, deoarece este utilizată atunci când este necesar.

mchid avatar
drapel bo
Dacă doriți să creșteți performanța sistemului, cel mai bun lucru pe care îl puteți face este să treceți la o unitate SSD în loc de un hard disk.
mchid avatar
drapel bo
Personal, am trecut la un SSD și am crescut swappiness la 70 pentru a obține performanțe mai bune pe 5 GB de RAM. Deoarece aveți 11 GB, schimbul va avea un efect redus asupra performanței sistemului, cu excepția cazului în care sistemul se blochează. În acest caz, schimbul ar trebui să crească performanța, nu să o scadă.
drapel in
@MooingDuck: De ce crezi că Linux a dezactivat schimbul în mod implicit? Cred că Ubuntu creează o partiție de swap în timpul instalării implicite - desigur, puteți insista să nu aveți swap dacă doriți.De asemenea, „crash” este atunci când sistemul nu mai răspunde sau repornește - acest lucru este foarte diferit de ceea ce face Linux într-o situație fără memorie (oprirea deterministă a proceselor pentru a elibera ram)
Ruslan avatar
drapel bv
Nu este corect să spunem că Ubuntu nu se blochează la supraîncărcarea RAM. Uciderea OOM-ului serverului dvs. X este la fel de proastă pentru experiența desktopului ca blocarea sau panicarea kernelului. Adevărat, în zilele noastre este rar din cauza ajustărilor scorului OOM făcute de distribuțiile moderne proceselor importante, dar am experimentat-o ​​adesea acum aproximativ 5 ani.
terdon avatar
drapel cn
Desigur, Linux (inclusiv Ubuntu) se poate prăbuși la supraîncărcarea RAM. Este mai greu să ajungi la acel punct din cauza modului în care gestionează memoria, dar nu este imposibil. Dacă folosiți de fapt toată memoria RAM, sistemul va începe să schimbe și, dacă o umpleți, de asemenea, acesta nu va mai răspunde și, în cele din urmă, se va prăbuși (probabil, de obicei forțăm repornirea când se întâmplă acest lucru).
drapel cn
@terdon Adică, nu se va prăbuși, există ucigașul OOM pentru astfel de situații. Depinde de ce vrei să spui prin „crash”, desigur, dar nucleul va fi bine. Alte procese - depinde.
mchid avatar
drapel bo
@terdon Da, mi s-a blocat frecvent sistemul pe un computer foarte vechi (doar 1,5 GB de RAM), dar asta a fost pentru că partiția mea de swap era prea mică și HDD-ul era foarte lent. După creșterea dimensiunii partiției de swap (și schimbarea de la 10 la 60), sistemul a fost lent, dar nu nu a răspuns.
Puncte:21
drapel tr

Memoria cache este de fapt memorie liberă.

Poate (și va) fi alimentat la fel de liber oricărui proces care solicită memorie, de îndată ce cealaltă memorie liberă este epuizată.

Între timp, nucleul ține evidența informațiilor stocate în cache în această memorie altfel liberă.

Nu este de așteptat ca aceste informații să fie scrise undeva de un i/o care necesită timp. Este fie scrisă, fie citită și nu a fost schimbată niciodată. Aceste informații pot fi șterse în siguranță (și rapid) din memorie.

Puncte:15
drapel bd

Memorarea în cache nu vă rănește în niciun fel!

RAM-ul nu este folosit prin cache... este a fi împrumutat prin cache! Aceasta înseamnă că va fi returnat pentru utilizare în momentul în care aveți nevoie de el.

Dacă software-ul dvs. solicită un bloc de memorie, sistemul merge „aici tu” și dă blocul. Dacă s-a întâmplat să existe cache acolo, elementele din cache sunt eliminate (adică nu mai sunt în cache și ar trebui să fie preluate din nou de pe disc dacă este necesar).

Sistemele mai inteligente vor face alegeri inteligente cu privire la elementele care să renunțe la cache pentru a vă oferi memorie.

Labham Jain avatar
drapel id
Acest lucru nu pare să fie adevărat, am încercat să rulez emulator Android, dar când ram-ul meu s-a plin cu memoria cache de 4 GB, mi-a blocat sistemul în loc să șterg acel cache...
terdon avatar
drapel cn
@LabhamJain pare că ți-ai consumat toată memoria RAM _și_ swap. Cache-ul discului nu este problema ta.
Harper - Reinstate Monica avatar
drapel bd
Problemele cu cache-ul @LabhamJain nu vă blochează sistemul, așa că cred că „cache” este o problemă și aveți o problemă complet diferită... asta se întâmplă tot timpul aici, se numește „problema XY”...
mchid avatar
drapel bo
@LabhamJain Obișnuiam să experimentez zdrobirea discurilor pe un computer vechi și s-a dovedit că aveam nevoie să măresc dimensiunea partiției mele de schimb – sistemul încerca să schimbe spațiul de schimb care nu exista. De asemenea, am avut blocări temporare din cauza unui hard disk lent. Soluția a fost trecerea la SSD.
Puncte:10
drapel cn
raj

Deschideți terminalul (Ctrl+Alt+T) și tastați comanda: liber -h. Veți obține rezultatul astfel:

              total folosit gratuit partajat buff/cache disponibil
Mem: 15Gi 2.0Gi 10Gi 33Mi 2.7Gi 13Gi
Schimbare: 31Gi 0B 31Gi

Aici aveți 15G de RAM totală, 2G este folosit, 2,7G este cache, iar 10G este afișat ca „gratuit”. Dar uită-te la ultima coloană: arată 13G ca „disponibil”. Asta înseamnă că tu poate utiliza 13G de RAM (adică suma liberă+cache) în ciuda faptului că doar 10G sunt afișați ca „liber”. După cum au subliniat celelalte răspunsuri, memoria cache este temporar: este alocat aplicatiilor daca este nevoie, exact ca si memoria "libera"; nu există nicio diferență între cei doi în privința asta.

Priviți astfel: sistemul folosește o parte din liber memoria de pe computer pentru a temporar stocați în cache datele citite de pe disc pentru a accelera operațiunile de pe disc. Dar, indiferent că este folosită ca cache, această memorie este încă liberă pentru a fi folosită de aplicații, adică va fi atribuită aplicației (invalidând memoria cache) dacă aplicația are nevoie de ea.

Puncte:3
drapel eg

Bun venit la GNU/Linux, prietene!

În această lume, nucleele noastre nu risipesc ram și nu ne facem griji că ram-ul este „în uz”, decât dacă aplicațiile se luptă cu alte aplicații pentru el.

Ceea ce descrii este normal.

100% din ram va fi utilizat în mod ideal pe un sistem GNU/Linux. Ceea ce aplicațiile ram nu au nevoie vor fi folosite de cache pe disc. Nu ai prefera ca operațiunile pe disc să funcționeze la viteza RAM-ului decât la viteza hard disk-urilor tale? Ei bine, îl primești acum, gratuit. Bucurați-vă și nu vă transpirați când vedeți memorie în uz prin memorarea în cache.

Puncte:3
drapel cn

RAM goală folosită ca cache pentru ssd-ul dvs. este proiectată pentru a accelera computerul. Dacă doriți să ștergeți memoria cache la fiecare x minute, puteți seta o intrare crontab pentru a șterge memoria cache.

Labham Jain avatar
drapel id
Asta nu vreau, vreau doar să-mi limitez stocarea în cache a memoriei...
Boann avatar
drapel cn
@LabhamJain Nu, nu.
Puncte:0
drapel br

Vă rugăm să verificați acest link https://www.linuxatemyram.com/, autorul explică că ceea ce vezi nu este ceea ce crezi că se întâmplă.

Puncte:0
drapel id

Ei bine, mi-am dat seama de problema mea cu sincronizare; echo 1 > /proc/sys/vm/drop_caches comandă, am scris greșit această comandă undeva și acum, dacă folosesc această comandă corect, atunci îmi curățește memoria cache, deci problema mea pare să fie rezolvată, deși vor fi apreciate mai multe răspunsuri pentru referințe viitoare și pentru comunitate.

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.