» »

linux kernel porabi po nekaj casa malo manj kot 10 GB rama?

linux kernel porabi po nekaj casa malo manj kot 10 GB rama?

joni_fego ::

Linux-zen kernel 4.8.6-1 za noncache, ki ga nikoli ne sprosti (razen seveda z resetom. Normalno je nekje do 2 gb ob zahtevni uporabi, oziroma par sto mb pri nezahtevni, cez cas pa zelo hitro pride na 10 GB (ni nekega posebnega opravila ob katerem se to zgodi, lahko je v idle na namizju, lahko pa premetava kupe datotek sem ter tja, predvaja kak film, poganja kak zahtevnejsi program, transcoda video iz x264 na x265 (hja prostor na disku ni zastonj :/) s handbrakom + vcasih se kak live stream preko plexa, poganja chromium s 100 + tabi, loada torrente, oziroma vse to hkrati) ki ji sprosti sele ob ponovnem zagonu. Prav tako dokler se mu enkrat ne zmesa, odvecni pomnilnik normalno sprosti nazaj. Cache dela in se sprosca/zaseda normalno (oziroma na silo v terminalu). Drugih tezav ni, racunalnik deluje hitro in stabilno, doseze tudi po 20+ dni uptima (bi lahko vec ce ga ne bi vsake toliko ugasnil da pocistim prah in podobno).

Ostale specifikacije so i5 4460 (kdaj bomo videli cenovno dostopne 16 jedernike pri enakih frekvencah in dual socket podporo), neka gigabyte plata z b85 chipsetom, 32gb rama (skoda da ne gre do vsaj 256gb :/), 1x 500 gb sata ssd + 5x3 tb hdd, to bi blo okvirno to

distribucija je arch Linux, namizje kde (ce bi imel gnome potem bi si bil itak sam kriv)

lahko dam config.gz oziroma kako drugo konfiguracijsko datoteko

čuhalev ::

Kako meriš porabo?

Spajky ::

Po moje ti Chromium zabija ... uf 100 tabov, saj imaš samo dve oči ...
"Bluzim na forumu, torej sem !" (še živ ) ...

hojnikb ::

pa sj mas zato ram da ga ponucas.

kaj pravi free -m
#brezpodpisa

Zgodovina sprememb…

  • spremenil: hojnikb ()

Miha 333 ::

Linux vedno porabi skoraj ves RAM. To je popolnoma normalno.

A healthy Linux system with more than enough memory will, after running for a while, show the following expected and harmless behavior:

free memory is close to 0
used memory is close to total
available memory (or "free + buffers/cache") has enough room (let's say, 20%+ of total)
swap used does not change


http://www.linuxatemyram.com

Brane22 ::

Chromium je zelo agresiven kar se rezervacije pomnilnika tiče, tudi če ga sam compilaš, boš opazil da direktno šnjofa po headerjih kernela in je odvisen od verzije kernela.

Dogaja se, da rezervira goro RAM-a, ki ga en sprošča in ker je ta zaseden fragmentirano ( po majhnih koščkih), ko stvar preseže neko mejo in prvič trči ob omejitev sistema, postane še bolj agresiven in zatrokira cel stroj.

Stvar se sploh opazi ob velikem številu odprtih tab-ov.

mojster_joni ::

joj ste mojstri ampak res

ne govorim o temu ko nezasedeni pomnilnik rabi za cache/bufferje, to je normalno in zaželjeno

govorim o temu

smem -k -w -K /boot/vmlinuz-linux-zen
Area                           Used      Cache   Noncache
firmware/hardware                 0          0          0
kernel image                  17.9M          0      17.9M
kernel dynamic memory         26.9G      26.2G     705.0M
userspace memory               3.2G     632.3M       2.6G
free memory                  261.4M     261.4M          0

ce pogledamo pod kernel dynamic memory vidimo da skupno porablja 26.9GB, od tega je 26.2G cache (ta del ni sporen, itag ga če se rabi za kaj drugega sprosti, če maš veselje ga pa na roke)

no potem imamo pa postavko noncache v kateri je tezava, zdaj sicer ne, ampak prej ali slej zraste na okoli 10 GB in za razliko od cacha se ne sprosti, za razliko od aplikacij pa ne gre v swap no to je problem

Brane22 je izjavil:

Chromium je zelo agresiven kar se rezervacije pomnilnika tiče, tudi če ga sam compilaš, boš opazil da direktno šnjofa po headerjih kernela in je odvisen od verzije kernela.

Dogaja se, da rezervira goro RAM-a, ki ga en sprošča in ker je ta zaseden fragmentirano ( po majhnih koščkih), ko stvar preseže neko mejo in prvič trči ob omejitev sistema, postane še bolj agresiven in zatrokira cel stroj.

Stvar se sploh opazi ob velikem številu odprtih tab-ov.

hvala brane, ampak tudi če zaprem vse programe bo tistih 10 gb še vedno zasedenih

Zgodovina sprememb…

Brane22 ::

Prvič slišim za smem, res pa da se s tem nisem še ukvarjal in da tistih nekajkrat ko sem se matral okrog alokacije, sem šel iskat članke po netu, ki so mi deskramblali text report v /proc/meminfo.

Očitno ta zadeva gleda po memory mappingih vseh procesov itd.

Ampak saj proces lahko mmapa RAM tudi tako, da tega ni moč swap-outati ( ena od opcij pri mmap, mislim da zahteva dani capability).

Mogoče se lahko poigraš s smemom ali s skriptom preparsaš /proc/proc_num/mem-whatever fileje, da vidiš, katera aplikacija to počne. Mogoče gre za server, ki štarta proces skozi doublefork ( kak http worker ali kaj podobnega), ki potem na ta način rezrevira buffer, njegov starš škripne in ta postane orphan.
Glavni proces opazi, da otroci crkavajo in naštepa nove, ki naštepajo nove vnuke, stari gredo pa v "sirotišnico", pod okrilje procesa s PID1.

Če jih ta ne pobija, ostajajo s svojimi kosi mmemappanega bufferja do restarta...

Miha 333 ::

Prilepi output free -m

Brane22 ::

Sem šel gledat na gentoo repo in edini smem je še iz leta 2007, gre pa enostavno za skript, ki skenira mem file procesov.

Na prvi uč se zdi da bi lahko rpišel do odgovora z grepanjem smem filea vseh procesov ( /proc/XX/smem ; XX je cifra)

Tsita stvar ti zlista vse alokacije pomnilnika in njihove atribute. Poišči take, ki imajo atribut Locked z več kot 0 kb in glej od tam dalje.

Zgodovina sprememb…

  • spremenilo: Brane22 ()

Brane22 ::

Aja pa še ena fora mi pade na pamet.

Pred časom so updatali virtual memory subsuystem tako, da ta omogoča alokacije huge pageov, tako da lahko rezerviraš recimo namesto standardnega 4k ali 8k framea tudi večje, recimo 2MB ali 1GB, v mejah, ki jih podaja sodobni HW.

Štos tega je zmanjšati režijsko delo kernelu, ki mu ni treba ob alokaciji recimo 256MB iskati okrog 64000 posameznih pageov, filati njihove vnose v MMU translacijsko tabelo itd.

AMpak posledica tega pa je, da mora tako področje obstajati neprekinjeno tudi v fizičnem ramu, to pa je nemogoče garantirati, če obstoječi sistem rezervira 4k pageje kjerkoli mu paše.

Okrog tega so neke frke z rezervacijo in alokacijo in ker Chrome izkorišča latest and greatest kernel fičrs, čisto možno da ob crkotju nekaj subprocesov taka področja ostanejo trajno rezervirana za alokacije hugepagov dane velikosti, tudi ko originalnih procesov, ki so to zahtevali, ni več.
Kako bi to preveril, mi brez branja dodatne dokumentacije, trenutno ne pade na pamet.

Brane22 ::

Aja, pa prosim poročaj, kaj je blo. Me prav zanima.

srus ::

Eh, shekali so ti stroj, pa sedaj gostuješ otroško pornografijo v tistih skrivnostnih gigabajtih.

Šalo na stran, poženi free, top (s < > sortiraj po različnih stolpcih porabe pomnilnikov), vmstat, grepaj in sortiraj VM po /proc/*/status, pa boš morda pametnejši.

mojster_joni ::

@brane:
ne vem kje si ti našel smem iz 2007, gre se za tega https://www.selenic.com/smem/download/


drugače pa ne verjamem da je kriv brskalnik.. res je da zna požrt ogromno rama, ampak ko ga zapreš ta ram lepo sprosti in ni nobenega problema, brskalnik ima imo kvečjemu toliko vpliva, da če ti je neznano kam poniknilo 10 gb in če jih še on porabi toliko se počasih že začne poznat

za tisto drugo varianto bom pa preveril, ko spet pride do te težave, čeprav afaik nisem opazil da bi se kaj sesuvalo oziroma da bi imel kdaj kupe zombi procesov

trenutno sem dal rahlo novejšo verzijo kernela (4.8.12-2) in iz nje pometal kup gonilnikov za naprave/stvari, ki jih nimam, ampak te reči so bile itak večinoma v obliki modulov in se niso nalagalet

kar se huge pagov tiče, maš to v mislih transparent huge pages al explicit huge pages?

zdaj trenutno ni nobenih težav, output smema je:

Area                           Used      Cache   Noncache
firmware/hardware                 0          0          0
kernel image                  15.6M          0      15.6M
kernel dynamic memory          8.2G       7.9G     319.2M
userspace memory               4.3G     686.1M       3.6G
free memory                   17.9G      17.9G          0


free -m

              total        used        free      shared  buff/cache   available
Mem:          31083        4024       18262         450        8796       26066
Swap:         32487           0       32487


cat /proc/mem



bom še slikal ko/če se mu spet zmeša

pegasus ::

Poskriptaj reliably reproducible test case, preveri če lahko ponoviš na zadnjem vanilla kernelu in če ja, pojdi vprašat na lkml.

mojster_joni ::

ravno v tem je stvar, ne vem tocno kaj sploh sprozi zadevo, normalno uporabljam racunalnik in se po nekaj casa pojavi... prvic sem cisto slucajno opazil (ker če ne počneš česa kar zahteva ogromno rama se itak ne pozna, da ti ga manjka 10 gb) ko sem pognal btrfs dedupe na diskih, kar porabi kar nekaj pomnilnika (no ok porabi ga ogromno) in je namesto da bi recimo chromium, ki ravno tako porabi veliko pomnilnika šel v swap, raje šel v grob

potem pa sem malo gledal kaj se dogaja in opazil da ram porablja nekaj v kernelu, česar se pa trenutno ne da dat v swap

s prejšnjo verzijo (tisto iz opja, se pravi 4.8.6-1) je bilo tako da je že od zagona počasi raslo do nekje 10 gb, ampak ne z enakomerno hitrostjo in ne odvisno od uporabe (oziroma jaz nisem našel nobene očitne odvisnosti (recimo veliko uporabe, hitrejša rast oziroma uporaba določenega prorama hitrejša rast, ...) razen te da je s časom bolj ali manj rasla in se nekje okoli 10 gb ustavila), ravno tako si lahko pobil večino programov, unmountal večino pogonov in tako naprej, pa kernel ni sprostil tistih 10 gb

no sedaj z novo verzijo (4.8.12-2) in rahlo spremenjeno konfiguracijo (večinoma sem samo izklopil razne gonilnike in podobno navlako, ki je nisem rabil in je prej ležala po modulih) in zaenkrat dela kot je treba, bomo videli kaj bo čez par dni

Horejšio ::

Top 10 procesov po kurjenju RAM-a:

ps -auxf | sort -nr -k 4 | head -10

mojster_joni ::

ni kazalo nič, oziroma če si seštel je tistih 10 gb pač falilo

Horejšio ::

Tole trolaš. Normalno lahko cache le prisilno izprazniš oziroma izklopiš za določen ukaz. Edino če si kernel sam popravljal :) Pa tudi sicer mi ni jasna prednost konstantne uporabe brez ...

Zgodovina sprememb…

Horejšio ::

Še vedno je pa tu live boot CD ostalih distribucij, da se testira ...

mojster_joni ::

zakaj misliš da je to troll post?

noben os ni kritiziran za bv, problem ki se je pojavil je lepo predstavljen, predstavljene so tudi rešitve, ki sem jih probal in končna ugotovitev da sem naložil malo novejšo verzijo kernela in rahlo spremenil nastavitve pri kompilanju, kar zgleda kot da je odpravilo težavo (potrka na les)... od včeraj je noncache kernel memory med 300 in 400 mb in ne raste.. lepo bi bilo vedeti sicer zakaj je do tega sploh prišlo, ampak oh well

Brane22 ::

neke interne potrebe ali leak btrfs driverja ?

mojster_joni ::

hja možno, se bom s tem ukvarjal če se ta težava spet pojavi, zaenkrat je uptime že več kot en dan kernel non cache poraba pa še vedno med 300 in 400 mb :)

Brane22 ::

To veš, da je bil odkrit kritičen security bug v network stacku, ki je bil odpravljen samo v najbolj frišnih kernelih distrojev ? Pri meni sem moral uprgadati gentoo-sources z 4.8.12 na 4.8.12-r1 . Baje tega patcha še ni niti v stock vanilla-4.8.12...

mojster_joni ::

maš mogoče kak link do tega?

drugače je ta verzija od 6. decembra in je malo pred stock 4.8.12 tako da mogoče je že not popravek

Brane22 ::

mojster_joni ::

hvala, sem pogledal pa zgleda je v 4.8.12-2 že not (v -1 pa ne)

Brane22 ::

Kakšno trolanje ?

Misliš, OP ni imel problema in je kar nekaj načel ?

Te stvari se komot zgodijo. Kernel štarta kup procesov ( kernel threads) in ti komot lahko rezervirajo memory, kiga en sprostijo. Ker to počnejo v hierarhiji višje od userlanda, je to komot nevidno navadni analizi, ker ta nima dostopa izven userlanda.

Heck, IIRC se v 4.9 seriji začne vpeljevanje vmem-a ( virttualnega pomnilnika, kot je mapiran skozi TLBje) v kernel infrastrukturo, kjer bo to praktično.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

KVM in swap

Oddelek: Operacijski sistemi
6641 (535) SasoS
»

Ubuntu 10.4 1,2GB poraba rama

Oddelek: Operacijski sistemi
201057 (783) KaRkY
»

Swap ali pagefile?

Oddelek: Operacijski sistemi
493388 (2190) MrStein
»

[Gentoo] Kernel upgrade (strani: 1 2 )

Oddelek: Operacijski sistemi
674496 (4022) Trubadur
»

RAM v Linuxu

Oddelek: Operacijski sistemi
8800 (734) BigWhale

Več podobnih tem