PTT推薦

Re: [問題] 造成Android手機卡頓的原因

看板MobileComm標題Re: [問題] 造成Android手機卡頓的原因作者
dodorododoro
(dodoro)
時間推噓 9 推:9 噓:0 →:45

※ 引述《plzza0cats (515ㄚㄚ)》之銘言:
: ※ 引述 《ezJapan (Japan)》 之銘言:
: :  
: : https://i.imgur.com/0WPgN28.jpg

圖 造成Android手機卡頓的原因
: :  
: https://i.imgur.com/foQG0f9.jpg
圖 造成Android手機卡頓的原因
: 手機剛買12天
: 12Ram沒想到沒什麼用
: 剩下2.6G可以用
: 是系統更新吃太多嗎?...
: 很難想像三年後會多卡==
: 我覺得安卓缺點就是記憶體分配很奇怪
: 不然其他都蠻優秀。

其實推文中已經有網友給出正解
zram用簡單但不精確來說就是把swap設置在ram disk上面
安卓很早就不再使用磁碟的swap了
swappiness是設置當記憶體剩下多少時才要開始用swap
對於系統上來看zram就是真正"已經"被吃掉的記憶體

舉一個簡化的例子來說一台10gb的安卓設備
系統本身吃掉2gb,剩下8gb ram又開了4gb zram
這時候等於已經用掉了6gb ram,剩下了40%可以用
假如設置的swappiness是90%。就是剩下的4gb ram用掉3gb後
就開啟swap,這時候你的zram吃掉的記憶體就變成swap來工作
這樣做的好處是zram都經過LZ4壓縮法,他實際效益比4gb大
只是會耗損掉一些效能

所以zram該開多大得看你的使用場景
如果你的記憶體不存在不夠用的問題
完全不使用zram其實效能還會更好
雖然有些特殊狀況測試會跟你說zram甚至比原本來得更快
例如記憶體大量搬移,zram經過壓縮搬來搬去當然更快
記憶體不足那開啟zram就增加程式的保留度跟可執行性
如果覺得寧願被退掉程式也不想要減損任何效能zram就一點都不要開

如果安卓手機廠商都遵循Google建議
8gb ram以上機種會開3-4gb zram,而swappiness會設置在60%
所以開機後剩下不多的ram其實不是真正被用了只是被zram佔去

--

※ PTT留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.24.108.33 (臺灣)
PTT 網址

haveastar 04/12 15:03推!

plzza0cats 04/12 15:03大師

manbow77 04/12 15:11swappiness值90是指「剩下90%空間就開始用ZRAM」

manbow77 04/12 15:12這麼高的值反而會很破壞效能 因為現在ZRAM都經壓縮

dodorododoro04/12 15:13Okay 也可能我記反了。這個值一般也不太去調

manbow77 04/12 15:13google預設60嚴格說來是因為過去手機RAM一直都短缺

manbow77 04/12 15:17小於4G或2G的RAM以目前應用來說swap採ram-disk有利

manbow77 04/12 15:18但現今動不動就8G RAM起跳 其實連SWAP都不需要了

manbow77 04/12 15:36ZRAM最有話題性大概是安卓4.0左右的時期

manbow77 04/12 15:38當時手機RAM普遍2G以下 ROM還在emmc

manbow77 04/12 15:39比起讓swap去讀寫還在幾十MB/s就偷笑的ROM

manbow77 04/12 15:41直接耗CPU壓縮/解壓縮記憶體內部資料反應要快得多

Segal 04/12 15:47跑DB的伺服器會建議swappiness設為0。不過終端設備

Segal 04/12 15:47我傾向於不需要這麼極端。SWAP作為調控RAM的手段,

Segal 04/12 15:47在大多數場景還是適用的。就算你有8G RAM你還是不

Segal 04/12 15:47會希望背景app一旦記憶體吃緊就被OOM kill的

manbow77 04/12 15:51有8G還會被砍背景的極端情況 zram幫助大概也不大了

manbow77 04/12 15:52主要是ZRAM壓縮率不大 否則壓縮解壓縮的耗能和延遲

manbow77 04/12 15:54還比幾百MB/s的UFS直接讀寫還慘時就本末倒置了

manbow77 04/12 15:58手邊某機種某次更新後swappiness=90根本計畫性汰舊

Sinreigensou04/12 16:11所以原來記憶體有zram機制 難怪我什麼app都沒開就

Sinreigensou04/12 16:11吃一半

Sinreigensou04/12 16:11所以我8g記憶體用這功能反而減少效能

Sinreigensou04/12 16:12那有沒有什麼辦法關閉它

manbow77 04/12 16:21RAM維持吃一半以上在Linux很常見 不見得是ZRAM造成

manbow77 04/12 16:22device info之類APP可以看到zram狀態

abc0922001 04/12 16:34sony 開源的 device tree 是設定 25

manbow77 04/12 16:37swappiness值設定恰當的話對效能影響不大 例如設20

manbow77 04/12 16:40ram使用率80%前不會動用swap自然也不會用到zram

manbow77 04/12 16:42計畫汰舊設到90的基本上效能之前續航就非常有感差

abc0922001 04/12 16:46https://tinyl.io/3uNv Pixel5/4a5G是100

square4 04/12 17:45高wappiness代表積極用swap,占用cpu拖慢速度,ram大

square4 04/12 17:45的手機越明顯,等於0也不代表關閉swap,反正都是為了

square4 04/12 17:45避免殺後台做出的取捨

athraugh 04/12 19:34manbow77,你說的被設定 90型號可以透露一下嗎?

manbow77 04/13 07:30U-3u 倒數第二次更新時swappiness190(系統取90)

manbow77 04/13 07:31該版本swappiness值被鎖權限 要root才看得到

manbow77 04/13 07:34後來最終更新有無變動不知道 那時我刷三方ROM了

Sinreigensou04/13 11:55剛剛去下了device info,好像沒看到相關設定不過我

Sinreigensou04/13 11:55手機沒root還是說要root才看得到

manbow77 04/13 13:41https://i.imgur.com/fPZHeDx.png devcheck

圖 造成Android手機卡頓的原因

manbow77 04/13 13:42如果沒顯示zram 表示手機沒有設zram或關閉swap

Sinreigensou04/13 13:59有了原來是我原本載的那個APP太廢

Sinreigensou04/13 14:00https://i.imgur.com/mSqzcdU.jpg

圖 造成Android手機卡頓的原因

Sinreigensou04/13 14:00zram要不要關掉

Dino14124 04/13 17:36優文,推個

manbow77 04/13 21:11稍微糾正一下觀念 ZRAM只是swap的一種形式

manbow77 04/13 21:12而SWAP的存在主要是預防實體RAM吃緊造成的崩潰

manbow77 04/13 21:13Windows上的虛擬記憶體應該很熟悉 那也是swap概念

manbow77 04/13 21:14所以保留後台之類ZRAM並無法有效改善 會被砍的照砍

manbow77 04/13 21:22所以了解swap意義後應該會發現關鍵在swappiness值

manbow77 04/13 21:24理想狀態下 RAM剩餘空間還很有餘裕就不該使用zram

manbow77 04/13 21:24那根本脫褲子放屁

qqshiang 04/14 12:26吃的好多r https://i.imgur.com/pKUeVlv.jpg

圖 造成Android手機卡頓的原因