zoukankan      html  css  js  c++  java
  • SWT 重启案例分析(六)

    极力推荐文章:欢迎收藏
    Android 干货分享

    阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android

    本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:

    一、拷贝大文件,IO wait 高,导致SWT重启
    二、高IO wait 导致重启的 解决方案

    一、拷贝大文件,IO wait 高,导致SWT重启

    1.通过 AEE 抓取的log

    部分 Log 如下:
    Aee log

    2.高 IO 导致CPU 使用率过高

    部分 Log 如下:
    Block IO 很高导致重启

    二、高IO wait 导致重启的 解决方案

    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
    
    2. 关闭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. 关闭 wtf dump文件log信息

    当拷贝大型文件到手机中(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 {
    
    

    至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

    微信关注公众号:  程序员Android,领福利

  • 相关阅读:
    matlab练习程序(最终腐蚀)
    matlab练习程序(二值图像内外边界跟踪)
    matlab练习程序(kmeans聚类)
    matlab练习程序(纹理合成)
    matlab练习程序(图像区域分裂)
    [学习opencv]图像腐蚀、膨胀、开闭操作
    [学习opencv]彩色图像通道分离、合成
    matlab练习程序(条件膨胀)
    matlab练习程序(自适应中值滤波RAMF)
    数据仓库主题设计及元数据设计
  • 原文地址:https://www.cnblogs.com/wangjie1990/p/11326946.html
Copyright © 2011-2022 走看看