一個好的性能測試指標(biāo)應(yīng)該滿足 2 個條件:
成都創(chuàng)新互聯(lián)是專業(yè)的三門峽網(wǎng)站建設(shè)公司,三門峽接單;提供網(wǎng)站設(shè)計制作、網(wǎng)站制作,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行三門峽網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊,希望更多企業(yè)前來合作!對過去發(fā)生的事情做總結(jié).
對未來做預(yù)期.
Settings->Memory就很好地實現(xiàn)了這 2 個條件:
[3 hours]: 表示統(tǒng)計過去 3 小時 RAM 的使用情況. 使用者還可以選擇 6 小時, 12 小時, 1 天.
[Performance]: 表示手機(jī)當(dāng)前的性能情況. 這里有一套 Google 的性能評價標(biāo)準(zhǔn).
[Total memory]/[Average used]/[Free]: 統(tǒng)計時間內(nèi) RAM 的平均使用情況. 特別是 Free, 這里也有一套 Google 的性能評價標(biāo)準(zhǔn).
—— 這 2 個評價標(biāo)準(zhǔn)是本次的重點.
[Performance] —— 該指標(biāo)的評價標(biāo)準(zhǔn).
這是 Google 的即時指標(biāo). 僅表示打開 memory 這個頁面時, 手機(jī)的 RAM 情況.
Google 的理念仍然是: RAM 不使用就是浪費, 與其浪費, 不如用來做 Cached. 所以, 當(dāng) Cached 數(shù)量少于一定數(shù)值的時候, 就表示內(nèi)存不足了. 在 Kernel Space, 使用 minfree 來做衡量 Cached 是否充足的指標(biāo); 在 User Space, 使用 memFactor 來做衡量 Cached 是否充足的指標(biāo).
memFactor是這樣定義的:
android/platform/frameworks/base/nougat-release/./services/core/java/com/android/server/am/ActivityManagerService.java |
// Now determine the memory trimming level of background processes. // Unfortunately we need to start at the back of the list to do this // properly. We only do this if the number of background apps we // are managing to keep around is less than half the maximum we desire; // if we are keeping a good number around, we'll let them use whatever // memory they want. final int numCachedAndEmpty = numCached + numEmpty; int memFactor; if (numCached <= ProcessList.TRIM_CACHED_APPS && numEmpty <= ProcessList.TRIM_EMPTY_APPS) { if (numCachedAndEmpty <= ProcessList.TRIM_CRITICAL_THRESHOLD) { memFactor = ProcessStats.ADJ_MEM_FACTOR_CRITICAL; } else if (numCachedAndEmpty <= ProcessList.TRIM_LOW_THRESHOLD) { memFactor = ProcessStats.ADJ_MEM_FACTOR_LOW; } else { memFactor = ProcessStats.ADJ_MEM_FACTOR_MODERATE; } } else { memFactor = ProcessStats.ADJ_MEM_FACTOR_NORMAL; } |
也就是:
Cached Process + Empty Process <= 3 個, 則認(rèn)為 Critical Memory
Cached Process + Empty Process <= 5 個, 則認(rèn)為 Low Memory
Cached Process <= 5 個, 而且 Empty Process <= 8 個, 則認(rèn)為 Moderate Memory
其他情況則認(rèn)為 Normal Memory
如果修改了 MAX_CACHED_APPS, 如上的 Threshold 也會被重新計算.
// The maximum number of cached processes we will keep around before killing them. // NOTE: this constant is *only* a control to not let us go too crazy with // keeping around processes on devices with large amounts of RAM. For devices that // are tighter on RAM, the out of memory killer is responsible for killing background // processes as RAM is needed, and we should *never* be relying on this limit to // kill them. Also note that this limit only applies to cached background processes; // we have no limit on the number of service, visible, foreground, or other such // processes and the number of those processes does not count against the cached // process limit. static final int MAX_CACHED_APPS = 32; |
[Free] —— 該指標(biāo)的評價標(biāo)準(zhǔn).
這是 Google 在 M 上加入的歷史指標(biāo). 該指標(biāo)不僅僅計算了過去一段時間的 Free RAM 情況, 而且特別在算法上加入了 Safe RAM 對未來的手機(jī)性能做預(yù)測.
android/platform/packages/apps/Settings/nougat-release/./src/com/android/settings/applications/ProcStatsData.java |
if (memInfo.hiddenAppThreshold >= realFreeRam) { realUsedRam = freeRam; realFreeRam = 0; baseCacheRam = (long) realFreeRam; } else { realUsedRam += memInfo.hiddenAppThreshold; realFreeRam -= memInfo.hiddenAppThreshold; baseCacheRam = memInfo.hiddenAppThreshold; } |
在這里有 2 個點需要注意:
memInfo.hiddenAppThreshold. 這是 ADJ=9 對應(yīng)的水位. 也就是如下的 55296 x 4K = 216M
>adb shell cat /sys/module/lowmemorykiller/parameters/minfree 18432,23040,27648,32256,55296,80640 |
realFreeRam. 它包括 4 個部分, 分別是 Free + Cached + Buffer – Mapped.
如果統(tǒng)計得到的 realFreeRam 多于216M, 就在 realFreeRam 中扣除 216M, 獲得的就是 App 可以使用的 Free RAM.
如果統(tǒng)計得到的 realFreeRam 少于216M, 那么表示 safe 空間已經(jīng)被用完, App 可以使用的 Free RAM 就是 0.
會有這樣的聲音: 當(dāng) Free 為 0 時, 手機(jī)還是可以正常運行啊? 這個數(shù)據(jù)是不是錯誤的?
Google 之所以設(shè)計這個算法, 是因為有這樣一個事實: 當(dāng) LMK 殺到 ADJ<9 的進(jìn)程后, 手機(jī)性能會開始下降. 一開始并不明顯, 但隨著使用時間的增加, 下降會越來越明顯, 越來越快.
所以 Google 使用 ADJ=9 的 minfree 做 Safe RAM, 是有價值并且很明智的.
對于使用者, 通過這個指標(biāo), 可以很簡單知道自己的操作習(xí)慣對手機(jī)性能的影響.
因為這套指標(biāo)會讓數(shù)據(jù)變得很不漂亮, 很多產(chǎn)品會排斥. 但是作為 PM, 這套指標(biāo)會讓你的產(chǎn)品變得更 safe.
為了數(shù)據(jù)漂亮, 減少 minfree 會是一個做法. 但是另一個事實是, 調(diào)低水位, 會讓 RAM 變得緊張, 增加 swap, 從而使得手機(jī)變慢. 如果使用的 eMMC 性能并不好, 請不要這樣做. 增加 RAM, 減少預(yù)置功能, 積極做進(jìn)程清理才是王道.
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
當(dāng)前名稱:性能測試指標(biāo)-創(chuàng)新互聯(lián)
網(wǎng)頁路徑:http://aaarwkj.com/article6/ccopig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、網(wǎng)站排名、靜態(tài)網(wǎng)站、品牌網(wǎng)站建設(shè)、App設(shè)計、全網(wǎng)營銷推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容