SAJÁT FELELŐSSÉGRE
*Javítás alatt azt értem hogy az AOSP forrásban nevetségesen alacsonyan ("Froyo szinten") tartott empty process / cached process ürítési időt / darabszámot növeljük meg hogy a rendszer ne zárogassa be a folyamatainkat csak azért mert épp nem csinálunk velük semmit vagy mert épp nincs megjelenítve, esetleg nincs rajta valami amit aktívan lehetne nyomokodni pl. natív gombok, csúszkák, lejátszott videó, zene, etc.. (mert pl. csak egy betöltött weblap amin épp hozzászólást írsz.. ami elvész egy sima taszkváltással).
Igen, ez azzal fog járni hogy a mutatott free RAM kevesebb lesz, igen, azért mert végre valahára használni fogja a rendszer, igen, ha én nem akarok bezárni valamit akkor NE záródjon be, ha memóriában akarom hogy legyen akkor tartsa ott a rendszer nekem. A RAM-ot kifizettem, NEM akarom üresen tartani, ha van memory pressure (vagyis pl. egy új folyamat / alkalmazás indításához KELL a memória akkor fel fogja szabadítani a rendszer, nem kell emiatt aggódni, az empty folyamatokból fel lesz szabadítva a hely).
Android 10 és felette. Alatta is vannak lehetőségek de nem kívánok már foglalkozni vele.
A periodic nevű service lehet csak MIUI specifikus - ha azt nem lehet kikapcsolni az nem baj. A periodic helyett lehet az adott gyártói ROM mást vagy saját service-t használ (lásd: dontkillmyapp.com)
MIUI-ra ettől még ugyanúgy kell(het) a MIUI kanossza (autostart, lakatolás, etc..)!
Úgyhogy free RAM huszárok kíméljenek.
ADB-vel vagy WebADB-vel:
adb shell
cmd settings put global settings_enable_monitor_phantom_procs false
cmd device_config set_sync_disabled_for_tests persistent
cmd device_config put activity_manager max_phantom_processes 2147483647
cmd device_config put activity_manager max_cached_processes 256
cmd device_config put activity_manager max_empty_time_millis 43200000
cmd periodic enable false
vagy
adb shell cmd settings put global settings_enable_monitor_phantom_procs false
adb shell cmd device_config set_sync_disabled_for_tests persistent
adb shell cmd device_config put activity_manager max_phantom_processes 2147483647
adb shell cmd device_config put activity_manager max_cached_processes 256
adb shell cmd device_config put activity_manager max_empty_time_millis 43200000
adb shell cmd periodic enable false
Ha van root a készüléken akkor terminálból mehet így is:
su -c cmd settings put global settings_enable_monitor_phantom_procs false
su -c cmd device_config set_sync_disabled_for_tests persistent
su -c cmd device_config put activity_manager max_phantom_processes 2147483647
su -c cmd device_config put activity_manager max_cached_processes 256
su -c cmd device_config put activity_manager max_empty_time_millis 43200000
su -c cmd periodic enable false
vagy
su
cmd settings put global settings_enable_monitor_phantom_procs false
cmd device_config set_sync_disabled_for_tests persistent
cmd device_config put activity_manager max_phantom_processes 2147483647
cmd device_config put activity_manager max_cached_processes 256
cmd device_config put activity_manager max_empty_time_millis 43200000
cmd periodic enable false
Ellenőrzés:
adb shell
cmd settings get global settings_enable_monitor_phantom_procs
cmd device_config is_sync_disabled_for_tests
cmd device_config get activity_manager max_phantom_processes
cmd device_config get activity_manager max_cached_processes
cmd device_config get activity_manager max_empty_time_millis
cmd periodic dump | grep Enable
vagy
adb shell cmd settings get global settings_enable_monitor_phantom_procs
adb shell cmd device_config is_sync_disabled_for_tests
adb shell cmd device_config get activity_manager max_phantom_processes
adb shell cmd device_config get activity_manager max_cached_processes
adb shell cmd device_config get activity_manager max_empty_time_millis
adb shell cmd periodic dump | grep Enable
Visszaállítás - ugyanaz visszafelé:
ADB-vel vagy WebADB-vel:
adb shell
cmd settings reset global settings_enable_monitor_phantom_procs
cmd device_config set_sync_disabled_for_tests none
cmd device_config delete activity_manager max_phantom_processes
cmd device_config delete activity_manager max_cached_processes
cmd device_config delete activity_manager max_empty_time_millis
cmd periodic enable true
vagy
adb shell cmd settings reset global settings_enable_monitor_phantom_procs
adb shell cmd device_config set_sync_disabled_for_tests none
adb shell cmd device_config delete activity_manager max_phantom_processes
adb shell cmd device_config delete activity_manager max_cached_processes
adb shell cmd device_config delete activity_manager max_empty_time_millis
adb shell cmd periodic enable true
Ha van root a készüléken akkor terminálból mehet így is:
su -c cmd settings reset global settings_enable_monitor_phantom_procs
su -c cmd device_config set_sync_disabled_for_tests none
su -c cmd device_config delete activity_manager max_phantom_processes
su -c cmd device_config delete activity_manager max_cached_processes
su -c cmd device_config delete activity_manager max_empty_time_millis
su -c cmd periodic enable true
vagy
su
cmd settings reset global settings_enable_monitor_phantom_procs
cmd device_config set_sync_disabled_for_tests none
cmd device_config delete activity_manager max_phantom_processes
cmd device_config delete activity_manager max_cached_processes
cmd device_config delete activity_manager max_empty_time_millis
cmd periodic enable true
Meg egy restart, biztos ami sicher.
Ellenőrzés:
adb shell
cmd settings get global settings_enable_monitor_phantom_procs
cmd device_config is_sync_disabled_for_tests
cmd device_config get activity_manager max_phantom_processes
cmd device_config get activity_manager max_cached_processes
cmd device_config get activity_manager max_empty_time_millis
cmd periodic dump | grep Enable
vagy
adb shell cmd settings get global settings_enable_monitor_phantom_procs
adb shell cmd device_config is_sync_disabled_for_tests
adb shell cmd device_config get activity_manager max_phantom_processes
adb shell cmd device_config get activity_manager max_cached_processes
adb shell cmd device_config get activity_manager max_empty_time_millis
adb shell cmd periodic dump | grep Enable
Az írás alapja a régi a Magisk modulom itt és a benne található leírások.Egyelőre a modult még nem frissítettem ugyanis tulajdonképpen nem tipikusan a rendszerbe kell systemless belenyúlni (file-t lecserélni, etc.) hanem tényleges rendszerparamétereket átírni - de az új modul template-el ugye van service.sh amivel boot-kor ezeket be lehet állítani meg van uninstall.sh amivel a Magisk modul uninstall-kor vissza lehet állítani mindent a fentiek szerint - szóval inkább csak lusta vagyok egyelőre megírni.. Frissítettem, elvileg működnie kellene mostmár.
És.. Hogy mit untam meg alapvetően? Random éjszakai logcat-ből részlet:
Date Time PID TID APP TAG Text
09-11 01:27:56.822 1000 2075 2123 I PeriodicCleaner: current focused package: com.android.chrome
09-11 01:27:56.824 1000 2075 2123 I ProcessManager: Kill reason PeriodicCleaner(4|2|pressure) from pid=2075
09-11 01:27:56.849 1000 2075 2123 I ProcessManager: PeriodicCleaner(4|2|pressure): kill com.facebook.orca Adj=400 State=10
09-11 01:27:56.850 1000 2075 2123 I ActivityManager: Killing 7223:com.facebook.orca/u0a275 (adj 400): PeriodicCleaner(4|2|pressure)
09-11 01:27:56.861 1000 2075 2123 I ProcessManager: PeriodicCleaner(4|2|pressure): kill com.facebook.orca:fwkstartlog Adj=935 State=19
09-11 01:27:56.861 1000 2075 2123 I ActivityManager: Killing 8249:com.facebook.orca:fwkstartlog/u0a275 (adj 935): PeriodicCleaner(4|2|pressure)
09-11 01:27:56.866 1000 2075 2123 I ProcessManager: PeriodicCleaner(4|2|pressure): kill dev.sasikanth.pinnit Adj=250 State=5
09-11 01:27:56.866 1000 2075 2123 I ActivityManager: Killing 5329:dev.sasikanth.pinnit/u0a240 (adj 250): PeriodicCleaner(4|2|pressure)
09-11 01:27:56.870 1000 2075 2123 I ProcessManager: PeriodicCleaner(4|2|pressure): kill com.life360.android.safetymapd Adj=400 State=10
09-11 01:27:56.870 1000 2075 2123 I ActivityManager: Killing 6709:com.life360.android.safetymapd/u0a542 (adj 400): PeriodicCleaner(4|2|pressure)
09-11 01:27:56.876 1000 2075 2123 I ProcessManager: PeriodicCleaner(4|2|pressure): kill com.google.android.webview:sandboxed_process0rg.chromium.content.app.SandboxedProcessService0:0 Adj=905 State=10
09-11 01:27:56.877 1000 2075 2123 I ActivityManager: Killing 9589:com.google.android.webview:sandboxed_process0rg.chromium.content.app.SandboxedProcessService0:0/u0a542i2 (adj 905): PeriodicCleaner(4|2|pressure)
09-11 01:27:56.879 1000 2075 2123 I ProcessManager: PeriodicCleaner(4|2|pressure): kill com.life360.android.safetymapd:service Adj=500 State=10
09-11 01:27:56.880 1000 2075 2123 I ActivityManager: Killing 6633:com.life360.android.safetymapd:service/u0a542 (adj 500): PeriodicCleaner(4|2|pressure)
Most komolyan..!
Kinyírni egy OOM ADJ 400-as folyamatot csak mert éjszaka nem nyomkodom a Messenger-t?
Kinyírni egy OOM ADJ 400-as folyamatot csak mert éjszaka nem nyomkodom a Life360 alkalmazást
ami egyébként pont arra hivatott hogy nézze merre járok (helyinfo megosztás családban)?
Kinyírni egy OOM ADJ 250-es (!!!) folyamatot csak mert éjszaka nem nyomkodom a Pinnit nevű alkalmazást
aminek egyébként van egy permanens értesítése ami pont azért (is) permanens hogy a rendszer ne lőhesse ki?!!
Mindezt úgy, hogy egyébként az empty max 8 és egyébként a lista 16 LRU elemet tartalmaz
de mégse az empty process-ek memóriáját szabadítja fel, hanem egy "erős" OOM ADJ-vel rendelkezőt?!
Mindezt úgy, hogy log szerint egyébként is van annyi felhasználható RAM mint égen a csillag..
Mindeközben foglalt file cache van 1.5GB (még csak nem is dirty, instant felszabadítható),
valamint 4GB ZRAM-ből 400 foglalt csak vagyis semmiféle memory pressure nincs..!
Miért nem azt szabadítja fel ahelyett hogy relatív erős adj-vel rendelkező, gyak. élő folyamatokat rugdos ki random?!
Még ekkora hülyeséget a hátán nem hordott a Föld mint ez a MIUI féle szabad memória spórolás.. teljesen értelmetlen! Ezúton innen is üdvözlöm a huszárokat..
Ha van root és csak a PeriodicCleaner-t akarod kikapcsolni akkor:
su
setprop persist.sys.periodic.enable false
vagy egysorosan:
su -c setprop persist.sys.periodic.enable false
Utána akár el is lehet távolítani a Magisk-et (vagy KernelSU-t, etc..) mert ez beírja a persist.sys.periodic.enable -t false értékkel a /data/property/persistent_properties -be így a ROM bármelyik prop file-jában bármi is van beállítva ezzel kapcsolatban az biztosan felül lesz írva false-al boot-kor így el se indul a PeriodicCleaner szolgáltatás.. Lejelentettem ezt amúgy Xiaomi.EU-n és ugyan tudnak róla de NEM kapcsolják ki.. Egyébként elvileg három ehhez tartozó prop van:
persist.sys.periodic.enable=false
persist.sys.periodic.fgtrim=false
persist.sys.periodic.startprocess.enable=false
Mindhármat érdemes kicsapni false-ra..
Ez így "maradandó" és túléli a reboot-ot így nem ez van a Magisk modulban (abban a szolgáltatás leállítása van) azért mert a Magisk modulok systemless-ek "kellenének" legyenek és nem akartam az uninstall script-et megírni hogy akkor uninstall-kor szedje ki mert ha nem rendes uninstall-al hanem pl. a modul mappa törlésével törlődik a modul akkor az uninstall script nem fut le és nem lesz maga után eltakarítva rendesen..
Ezen felül ami még kicsaphatja az alkalmazásokat az a backup.. mindegy hogy MIUI vagy Swift vagy bármi.. ami alkalmazást adatokkal ment az azzal kezdi hogy megállítja a folyamatait. Így tesz pl. a Google beépített backup-ja is így ha be van kapcsolva nem kell meglepődni hogyha éjjel, töltőn, sokáig tétlenül hagyott készüléken így is kipusztulnak a futó alkalmazások. Vagy ki kell akkor kapcsolni az automatikus backup-okat vagy élni kell a dologgal hogy mikor lefut a backup akkor ki lesz nyírva minden folyamat (service-eknek egyébként újra kell indulni, így pl. egy Messenger újra kellene kapjon értesítéseket de megnyitva azt a teljes alkalmazás nulláról indul).