首页 > 系统相关 >Android nice 进程优先级设置

Android nice 进程优先级设置

时间:2023-11-21 10:31:55浏览次数:36  
标签:优先级 priority 源码 进程 Android nice



文章目录

  • 1.简介
  • 2.查看 nice 值
  • 3.修改 nice 的值
  • 1) adb 命令修改
  • 2) 在源码中修改


1.简介

在Android中,可以使用nice值来设定一个进程的优先级,系统的调度器可以根据nice值来合理的调度进程,主要特点如下:

在Android中,nice的取值范围为**-20~19**
在Android中,nice值的默认大小为0
在Android中,nice值越大,进程的优先级越低,获得的CPU调用机会就越少;nice值越低,进程的优先级越高,获得的CPU调用机会越多
在Android中,父进程fork出来的子进程nice值与父进程相同,你进程renice后,子进程的nice值不会改变.

2.查看 nice 值

命令查看:

adb shell top

Android nice 进程优先级设置_Android

3.修改 nice 的值

以 systemui 为例:

1) adb 命令修改
adb shell renice -n  -10 7386(pid 号)

Android nice 进程优先级设置_java_02

我们可以看到修改之后 systemui nice 的变小了,那么在cpu 调度中它会优先使用.

2) 在源码中修改

源码中进行进程优先级设置的接口是 setThreadPriority(); 具体用法可以去查看这个函数

/**
731       * Set the priority of a thread, based on Linux priorities.
732       *
733       * @param tid The identifier of the thread/process to change.
734       * @param priority A Linux priority level, from -20 for highest scheduling
735       * priority to 19 for lowest scheduling priority.
736       *
737       * @throws IllegalArgumentException Throws IllegalArgumentException if
738       * <var>tid</var> does not exist.
739       * @throws SecurityException Throws SecurityException if your process does
740       * not have permission to modify the given thread, or to use the given
741       * priority.
742       */
743      public static final native void setThreadPriority(int tid, int priority)
744              throws IllegalArgumentException, SecurityException;
745

知道这个方法,那么我们就可以在 app 打开时对其进行 进程优先级的设定,仿照源码中
OomAdjuster.java 文件.
在 OomAdjuster.java 文件 的 applyOomAdjLocked 函数中 我们对 systemui 进行 nice 优先级 修改:

只需要在此函数 优先级设置的后面添加

省略````
                } catch (Exception e) {
                 if (DEBUG_ALL) {
                        Slog.w(TAG, "Failed setting thread priority of " + app.pid, e);
                    }
                 }
             }
         }

  +      if (app.processName == "com.android.systemui") {
  +             setThreadPriority(app.pid, -20);
  +       }

 if (app.repForegroundActivities != app.hasForegroundActivities()) {
省略```

然后重新烧写编译出来的镜像就可以.

源码出自 源码在线 AOSPXRef

文件参考:
在Android中修改进程nice值


标签:优先级,priority,源码,进程,Android,nice
From: https://blog.51cto.com/u_15866638/8497557

相关文章

  • Android Recyclerview的item间距实现
    Recyclerview中,提供了一个方法addItemDecoration给我们用于设置item的分割线下面提供几个常见的分割线效果注:下面的SizeUtils是AndroidUtilCode此库里的工具类,需要添加依赖,也可以自行修改封装的方法(主要是将dp单位转为px)以下代码已封装在我的库中stars-one/XAndroidUt......
  • Android系统开发 Android10版本自定义系统版本号
    前言  framework开发,此博客基于Android10版本,实现自定义系统版本号。找到修改位置需要修改的关键文件是buildinfo.sh搜索一下文件找到要改的目标文件这里建议将这个文件拷贝出来修改,各自的编译环境不同,拷贝或者传输文件的方式不同,这里各自发挥。下面是我在wsl里把文件拷......
  • 限制指定软件(进程)的网络带宽或设置优先级
    NetLimiter是一款功能强大的网络带宽控制软件,可以让您限制特定应用程序的网络带宽。它支持Windows7、8、10、11操作系统。下载页https://www.netlimiter.com/downloadhttps://download.netlimiter.com/nl/netlimiter-5.3.5.0.exe截图破解该软件可免费试用,但特定功能或......
  • 缺陷优先级标准
    缺陷优先级标准从高到低排序为P1阻塞、P2高、P3中、P4低、P5建议重要原则:bug产生的数据在后续是无法修复的,或修复成本很高,不能降级。迭代内有富余工作时间无论哪一级别的bug都需要完成修复。新迭代开始,产品经理可以对遗留bug调整优先级和修复时间。UX交互操作默认p3,UI样式......
  • Android Studio 下发布项目成APK文件
    AndroidStudio下发布项目成APK文件一、环境和版本Windows10专业版AndroidStudioGiraffe|2022.3.1Patch2这个太重要IDE该版后菜单位置会发生变化二、操作过程操作过程非常简单找到菜单Buid点击弹出后,再找到BuildBundle(s)/APK(s)鼠标滑动后选中BuildAPK(s)点击即可。新......
  • android更改模拟器下载地址以及模拟器基本命令
    一、修改模拟器下载地址模拟器存放默认路径:C:\Users\Administrator\.android\avd修改模拟器存放路径:点击androidstudio中的help--- EditCustomProperties 在弹出的文本框里输入你要存放的路径,保存即可ANDROID_AVD_HOME=D:\\二、模拟器常用命令查看模拟器列表......
  • Android TextView自动缩放能够完整显示出一行
    原文地址:AndroidTextView自动缩放能够完整显示出一行-Stars-One的杂货小窝app开发中,需要TextView可以在不同的屏幕大小要完整显示出文字,而不是显示省略号可以使用以下代码,让TextView字体实现自适应(不过具体算法已经实现了,我们只需要设置下即可实现效果)//设置最大行......
  • 从0写Android:一 安装&运行
    基本信息1.操作系统:windows2.功能:模拟操作其它手机软件3.本次完成:安装到运行第一个模板工程安装&启动1.下载地址:https://developer.android.google.cn/studio?hl=zh-cn下载下来直接无脑安装即可2.打开软件如果出现add-onlist报错,直接点击cancel即可,不要配置如果不......
  • 运用Kotlin开发Android应用的一些技巧
    今天的这篇文章带你学习使用Kotlin开发Android应用,并对比我们传统语言Java,让你真真切切的感受到他的美和优雅。配置项目gradle文件applyplugin:'com.android.application'applyplugin:'kotlin-android'applyplugin:'kotlin-android-extensions'dependencies{clas......
  • 安卓大佬力荐,送你一份超详细的Android学习教程指南
    前言之前,我们也经常听到一种声音“计算机专业已经饱和了,赚不到钱了”,但是现在,这种声音好像越来越少了,大家都没有这种担心了吗?主要是初级岗位已经趋于饱和,但高级岗位又相对缺乏,作为Android开发人员,我们应该思考怎么去往高级人才发展,而不是转学其他语言,我们是要懂得去成为金字塔顶端......