SWT 重啟案例分析(二)

和你一起終身學(xué)習(xí),這里是程序員Android
經(jīng)典好文推薦,通過閱讀本文,您將收獲以下知識點:
一、拷貝大文件,IO wait 高,導(dǎo)致SWT重啟
二、高IO wait 導(dǎo)致重啟的 解決方案
一、拷貝大文件,IO wait 高,導(dǎo)致SWT重啟
1.通過?AEE?抓取的log
部分?Log?如下:

Aee log
2.高 IO 導(dǎo)致CPU 使用率過高
部分?Log?如下:

Block IO 很高導(dǎo)致重啟
二、高IO wait 導(dǎo)致重啟的 解決方案
1. 調(diào)整內(nèi)核,優(yōu)化 IO
通過調(diào)整內(nèi)核參數(shù),將寫活動的高峰分布成頻繁的多次寫,每次寫入的數(shù)據(jù)比較少。這種方式執(zhí)行的效率比較低,但減少了內(nèi)核組合寫操作的機會,降低重啟概率發(fā)生。
修改init.rc?文件
文件路徑如下:system/core/rootdir/init.rc
# Tweak background writeout
write /proc/sys/vm/dirty_expire_centisecs 200
- write /proc/sys/vm/dirty_background_ratio 3
- write /proc/sys/vm/dirty_ratio 10
+ write /proc/sys/vm/dirty_background_ratio 1
+ write /proc/sys/vm/dirty_ratio 2
# Permissions for System Server and daemons.
chown radio system /sys/android_power/state
2. 關(guān)閉ANR dump 信息
修改init.aee.customer.rc文件
修改代碼如下:/vendor/mediatek/proprietary/external/aee/config_external/init.aee.customer.rc
on init
export LD_PRELOAD libdirect-coredump.so
write /proc/self/coredump_filter 39
+ setprop persist.dbg.anrflow 1
on property:vold.decrypt=trigger_restart_framework
restart debuggerd
3. 關(guān)閉 wtf dump文件log信息
當拷貝大型文件到手機中(5G以上),此時手機IO wait?會很高,此時Dump ANR wtf等信息,會嚴重影響到IO wait,如果系統(tǒng)超過1分鐘無響應(yīng),看門狗會自動重啟手機,故在 高IO wait的情況下,建議可以關(guān)閉?dump信息,緩解一下CPU負載過高的問題。
注釋掉 AMS 中的Log打印ActivityManagerService代碼路徑如下:/frameworks/base/services/core/java/com/android/server/am/ActivityManagerService
public final class ActivityManagerService extends ActivityManagerNative
// should be protected to avoid security holes, so yell loudly
// to ensure we examine these cases.
if (callerApp != null) {
- Log.wtf(TAG, "Sending non-protected broadcast " + action
- + " from system " + callerApp.toShortString() + " pkg " + callerPackage,
- new Throwable());
+ // add for copy 5G file reboot
+ android.util.Log.e("wangjie","Sending non-protected broadcast cause reboot pkg "+callerPackage);
+ //Log.wtf(TAG, "Sending non-protected broadcast " + action
+ // + " from system " + callerApp.toShortString() + " pkg " + callerPackage,
+ // new Throwable());
+ // add for copy 5G file reboot
} else {
- Log.wtf(TAG, "Sending non-protected broadcast " + action
- + " from system uid " + UserHandle.formatUid(callingUid)
- + " pkg " + callerPackage,
- new Throwable());
- }
+ // add for copy 5G file reboot
+ android.util.Log.e("wangjie","Sending non-protected broadcast cause reboot pkg "+callerPackage);
+ // Log.wtf(TAG, "Sending non-protected broadcast " + action
+ // + " from system uid " + UserHandle.formatUid(callingUid)
+ // + " pkg " + callerPackage,
+ // new Throwable());
+ // add for copy 5G file reboot
+ }
+
+ // add for copy 5G file reboot
}
} else {至此,本篇已結(jié)束。轉(zhuǎn)載網(wǎng)絡(luò)的文章,小編覺得很優(yōu)秀,歡迎點擊閱讀原文,支持原創(chuàng)作者,如有侵權(quán),懇請聯(lián)系小編刪除。同時感謝您的閱讀,期待您的關(guān)注。
