极力推荐文章:欢迎收藏
Android 干货分享
本篇文章主要介绍 Android
开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:
一、拷贝大文件,IO wait 高,导致SWT重启
二、高IO wait 导致重启的 解决方案
AEE
抓取的log
部分 Log
如下:
部分 Log
如下:
##### 1. 调整内核,优化 IO
通过调整内核参数,将写活动的高峰分布成频繁的多次写,每次写入的数据比较少。这种方式执行的效率比较低,但减少了内核组合写操作的机会,降低重启概率发生。
修改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
修改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
当拷贝大型文件到手机中(5G以上)
,此时手机IO wait
会很高,此时Dump ANR wtf
等信息,会严重影响到IO wait
,如果系统超过1分钟
无响应,看门狗会自动重启手机,故在 高IO wait
的情况下,建议可以关闭 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?{
至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!
原文:https://www.cnblogs.com/wangjie1990/p/11326946.html