安卓系统中线程优先级Priority查看方式汇总

背景:

在audio相关模块开发时候,会有遇到一些优先级比较高的线程比如快速混音线程FastMixer,但是这个快速混音中的快到底是如何体现的呢?其实有一个部分就是线程的优先级,优先级直接会影响线程的cpu获取情况,本文主要来给大家讲解一下如何获取查看系统中相关线程的优先级情况。

adb shell查看线程优先级方式:

查看某个进程各个线程的优先级情况

top -H -p 1014

bash 复制代码
Threads: 18 total,   0 running,  18 sleeping,   0 stopped,   0 zombie
  Mem:  2728512K total,  2675760K used,    52752K free,    52092K buffers
 Swap:   524284K total,        0K used,   524284K free,  1206072K cached
400%cpu   0%user   0%nice 150%sys 250%idle   0%iow   0%irq   0%sirq   0%host
  TID USER         PR  NI VIRT  RES  SHR S[%CPU] %MEM     TIME+ THREAD          PROCESS                                                                                                                    
 3811 audioserver  20   0  11G  22M  16M S  0.0   0.8   0:00.19 binder:1014_5   audioserver
 2886 audioserver  20   0  11G  22M  16M S  0.0   0.8   0:00.46 binder:1014_4   audioserver
 2007 audioserver  20   0  11G  22M  16M S  0.0   0.8   0:00.32 binder:1014_3   audioserver
 1918 audioserver   1 -19  11G  22M  16M S  0.0   0.8   0:00.13 AudioOut_2D     audioserver
 1917 audioserver  -4 -19  11G  22M  16M S  0.0   0.8   0:00.00 FastMixer       audioserver
 1909 audioserver   1 -19  11G  22M  16M S  0.0   0.8   0:00.07 AudioOut_15     audioserver
 1906 audioserver  -4 -19  11G  22M  16M S  0.0   0.8   0:03.11 FastMixer       audioserver
 1907 audioserver   1 -19  11G  22M  16M S  0.0   0.8   0:01.04 AudioOut_D      audioserver
 1908 audioserver  20   0  11G  22M  16M S  0.0   0.8   0:00.00 HwBinder:1014_3 audioserver
 1905 audioserver  20   0  11G  22M  16M S  0.0   0.8   0:00.03 TimerThread     audioserver
 1342 audioserver   4 -16  11G  22M  16M S  0.0   0.8   0:00.00 ApmAudio        audioserver
 1343 audioserver   4 -16  11G  22M  16M S  0.0   0.8   0:00.77 ApmOutput       audioserver
 1106 audioserver   4 -16  11G  22M  16M S  0.0   0.8   0:00.00 AudioFlinger_Pa audioserver
 1102 audioserver  20   0  11G  22M  16M S  0.0   0.8   0:00.00 HwBinder:1014_2 audioserver
 1099 audioserver  20   0  11G  22M  16M S  0.0   0.8   0:00.00 HwBinder:1014_1 audioserver
 1067 audioserver  20   0  11G  22M  16M S  0.0   0.8   0:00.43 binder:1014_2   audioserver
 1066 audioserver  20   0  11G  22M  16M S  0.0   0.8   0:00.04 binder:1014_1   audioserver
 1014 audioserver  20   0  11G  22M  16M S  0.0   0.8   0:00.81 audioserver     audioserver

这里主要看到 PR NI这两个值。

chrt -p 1906查看具体的scheduling

bash 复制代码
130|gemini:/ # chrt -p 1906
pid 1906's current scheduling policy: SCHED_FIFO
pid 1906's current scheduling priority: 3
gemini:/ # chrt -p 1014                                                                                                                                                                                   
pid 1014's current scheduling policy: SCHED_OTHER
pid 1014's current scheduling priority: 0
gemini:/ # 

SCHED_FIFO(先进先出实时调度)

特点:

复制代码
实时调度策略,无时间片限制

相同优先级按FIFO顺序执行

高优先级线程可立即抢占低优先级线程

线程会一直运行直到:主动放弃、被更高优先级线程抢占、阻塞

SCHED_OTHER(完全公平调度CFS)

特点:

复制代码
默认调度策略,所有普通线程使用

基于完全公平调度器(CFS)算法

使用动态优先级,受nice值影响

有固定的CPU时间片

Perfetto查看线程优先级方法:

FastMixer线程优先级为96 (real-time)

普通的MxierThread的优先级为 Priority 101:

可以看到其实这里看到静态priority是 96和101,和上面top获取的是有一个转换关系

原文地址:
https://mp.weixin.qq.com/s/LsjJA8WNEfRFV4ts9kdTqQ

更多framework实战干货,请关注下面"千里马学框架"

相关推荐
浪潮IT馆2 小时前
Android Studio 非最新版本下载安装教程
android·ide·android studio
xiaozongt19893 小时前
MasterGo + Claude Code 生成 Android 布局:完整实践指南
android
Anhty4 小时前
2026最新免费手机音频处理工具 !!
android·功能测试·ios·智能手机·音视频
2501_915909066 小时前
iOS应用从开发到上架App Store的完整发布流程与步骤指南
android·ios·小程序·https·uni-app·webview
狗凯之家源码网7 小时前
AI 步数修改提交系统源码应用场景与落地指南
android·数据库·人工智能·运动步数
ZHOUPUYU7 小时前
PHP 9.0 前瞻:下一代 PHP 会带来哪些新功能?
android·开发语言·php
JMchen7 小时前
性能优化——让Native代码飞起来
android·c++·性能优化
ZHOUPUYU8 小时前
PHP 8.2 的核心高级特性,包括只读类、类型系统增强
android·性能优化·php
ZHOUPUYU8 小时前
PHP 8.0 高级技术实战:从新特性到性能优化
android·性能优化·php
不爱说话郭德纲8 小时前
从“点点点”到一键出包:我把 uni-app x Android 离线打包做成了脚本
android·前端·uni-app