Min­free, Ram mana­ger

Opi­szę, jak popraw­nie usta­wić war­to­ść min­free, tak aby cały czas sys­tem dys­po­no­wał dużą ilo­ścią ramu i nie wyrzu­cał apli­ka­cji z tej pamię­ci.

Do usta­wia­nia min­free pro­po­nu­ję uży­wać apli­ka­cji ram mana­ger. Wystę­pu­je ona w wer­sja­ch free i pro, ale już w wer­sji free moż­na manu­al­nie dosto­so­wy­wać min­free.

Min­free jest to plik znaj­du­ją­cy się w /sys/module/lowmemorykiller/minfree

Może­my go edy­to­wać nawet przy pomo­cy pro­gra­mu do edy­cji tek­stu. W tym pli­ku jest 6 liczb oddzie­lo­ny­ch prze­cin­kiem. Licz­ba z tego pli­ku ozna­cza war­to­ść pamię­ci RAM, któ­ra zasta­je wol­na.
Jeże­li podzie­li­my licz­bę z pli­ku przez 256, wyj­dzie nam war­to­ść w mega­baj­ta­ch. A Jak pomno­ży­my przez 4, wyj­dzie war­to­ść w kilo­baj­ta­ch. Jeże­li np. pierw­sza war­to­ść wyno­si 1536, dopie­ro gdy war­to­ść wol­nej pamię­ci RAM osią­gnie 6mb, apli­ka­cje pod­le­ga­ją­ce pod „fore­gro­und apps” będą mogły być zabi­ja­ne.

Tak więc każ­da licz­ba odpo­wia­da za mini­mal­ną wol­ną pamięć ram, zanim zosta­ną zabi­te sys­te­mo­we aplikacje/aplikacje na któ­ry­ch teraz dzia­ła­my. Powin­na ona być niska, zapew­ni nam to, że te apli­ka­cje nie będą się cra­sho­wa­ły same.

Kolej­ne licz­by to coraz mniej waż­ne pro­ce­sy, więc 6 licz­ba odpo­wia­da za dane pro­ce­sów z któ­ry­ch nie korzy­sta­my i raczej nie są potrzeb­ne.

Zauwa­ży­łem, że w pli­ku /sys/modules/lowmemorykiller/adj jest rów­nież 6 war­to­ści. Jest to plik zawie­ra­ją­cy prio­ry­te­ty dla pro­ce­sów.

Fore­gro­und apps – pro­ce­sy wyma­ga­ne, aby użyt­kow­nik mógł komu­ni­ko­wać się z urzą­dze­niem. Jest ich prze­waż­nie nie­wie­le. Powin­ny być zamy­ka­ne tyl­ko w osta­tecz­no­ści.

Visi­ble apps – pro­ce­sy nie wyma­ga­ne do inte­rak­cji z użyt­kow­ni­kiem, ale bar­dzo waż­ne. Tak samo, powin­ny być zamy­ka­ne tyl­ko w osta­tecz­no­ści.

Secon­da­ry server – pro­ce­sy w tle, takie jak Blu­eto­oth, pobie­ra­nie dany­ch z inter­ne­tu.

Hid­den apps – to samo, co secon­da­ry server, ale z niż­szym prio­ry­te­tem, np muzy­ka w tle.

Con­tent pro­vi­der – apli­ka­cje użyt­ko­we w tle, czy­li np apli­ka­cja do smsów, gra itp.

Emp­ty apps – są to czę­ści apli­ka­cji, okro­jo­ne tak, żeby przy ponow­nym włą­cze­niu apli­ka­cji czę­ść dany­ch była już wcze­śniej w pamię­ci, co skut­ku­je szyb­szym uru­cho­mie­niem.

Zaraz podam parę war­to­ści, dla róż­nej ilo­ści pamię­ci RAM. Jeże­li uży­wa­sz klien­ta fb i on cho­dzi cały czas w tle, dodaj 10mb do war­to­ści 4–6. jeże­li masz touchwi­za dodaj 10mb do 4–6. Jeże­li masz i fb ‚i TW dodaj 20 MB do war­to­ści 4–6.

War­to­ści są w mega­baj­ta­ch!!! Usta­wiaj przez: ram mana­ger > „Użyt­kow­ni­ka”

512 MB RAM
30,35,38,40,50,58

1Gb RAM
20,23,25,33,38,50

1.5GB RAM
12,21,26,30,35,45

2GB RAM
6,10,12,14,16,22

3GB RAM
5,8,10,13,15,20

Użyt­kow­ni­cy aosp mogą jesz­cze tro­chę zmniej­szyć te war­to­ści 😉 testo­wa­ne na KK, na LP nie spraw­dzo­ne.

Naj­więk­sze zmia­ny doty­czą jed­nak kolej­ny­ch war­to­ści.

Prze­cho­dzi­my do zakład­ki „infor­ma­cje o pamię­ci”. Szu­ka­my war­to­ści „Swap Total”.

Jeże­li Swap Total wyno­si 0, usta­wia­my „swap­pi­ness” i „VFS cache pres­su­re” na 0. jeże­li swap Total jest poni­żej 500000, usta­wia­my kolej­no 60 i 110. jeże­li „Swap Total” wyno­si powy­żej 500000 usta­wia­my kolej­no 100 i 135.

Może­my jesz­cze poeks­pe­ry­men­to­wać z war­to­ścia­mi „over­com­mit memo­ry” , „over­com­mit ratio” i „oom kill allo­ca­ting task”. Tym, któ­rzy mają TW/fb i/lub mie­li war­to­ść „Swap Total” powy­żej 0 pole­cam zosta­wić te war­to­ści w spo­ko­ju. Nato­mia­st Ci z aosp, bez swa­pu i fb mogą usta­wić „over­com­mit memo­ry” na 0, „over­com­mit ratio” na 0 i oom kill allo­ca­ting task na „praw­da”.

Potwier­dza­my usta­wie­nia. Zapta­sza­my „set on boot” i restar­tu­je­my tele­fon.

  • Łuka­sz

    Po usta­wie­niu set on boot moż­na odin­sta­lo­wać apli­ka­cje?
    Thx

    • ada­mo­1139

      Apli­ka­cja musi być cały czas zain­sta­lo­wa­na

      • Łuka­sz

        Sor­ry, że tak drą­żę ale sko­ro usta­wie na sztyw­no to to powin­no pod­mie­niać war­to­ści w tym pli­ku na sta­łe bez wzglę­du na to czy mam póź­niej zain­sta­lo­wa­ne czy nie. Mam rację?

        • ada­mo­1139

          Nie. Jak zazna­cza­sz set on boot, to przy następ­nym uru­cho­mie­niu tele­fo­nu apli­ka­cja będzie usta­wia­ła te same usta­wie­nia, co były wcze­śniej. Ale gdy usta­wi­sz set on boot i odin­sta­lu­je­sz apli­ka­cję, to po następ­nym uru­cho­mie­niu żad­na war­to­ść nie zosta­nie zmie­nio­na, bo nie ma pro­ce­su, któ­ry by tym zarzą­dzał. Nie ma wyko­naw­cy czyn­no­ści. Porów­nam to tak : zatryd­nia­sz pra­cow­ni­ka fizycz­ne­go, każe­sz mu codzien­nie robić po 8 godzin. Nie podo­ba Ci się jego pra­ca, więc po paru dnia­ch go zwal­nia­sz. Idąc Two­im tokiem myśle­nia, pra­cow­nik i tak codzien­nie by przy­cho­dził do pra­cy, bo mu kie­dyś kaza­łeś 😉

          • Łuka­sz

            Rozu­miem Cie dosko­na­le 🙂 jed­nak np kie­dy zmie­nia­sz pli­ki sys­te­mo­we dot np gło­śno­ści, że tak się wyra­żę to to się zapa­mie­tu­je bez eks­tra apli­ka­cji. Mysla­łem, że w tym przy­pad­ku będzie podob­nie 🙂
            Dzię­ki!