- 博客(257)
- 收藏
- 关注
原创 任务调度器:从入门到放弃(四)
rt_mutex_adjust_priochain,可以看到当一个RT线程因为锁的原因进入D状态等待的时候,它会把自己的优先级(RT优先级)传递给锁的持有者,也就是上面截图的kworker/u24:8线程,这时候kworker/u24:8会被短暂的提升到RT的优先级,得到优先调度,等到kworker/u24:8线程释放锁(rtmutex_unlock)的时候,kworker/u24:8会被恢复成原始的CFS进程。当RT线程出现异常时,进行限制。它们对于算力的需求是不一样的,最后的量化结果也应该是不一样的。
2025-07-11 17:30:34
715
原创 任务调度器:从入门到放弃(三)
而且这个漏电流的占比,随着工艺越来越先进,在整体电流中的占比越来越大。这才是最要命的,不仅不能提升性能,反而会受到惩罚,带来性能的衰退(因为惩罚过于严重,现代处理器至少要保证90%+的分支预测准确性,才能保障最基本的性能不衰退)。这条公式也说明一个最基本的问题,就是CPU频率虽然高了,虽然程序执行时间段了,但是从功耗上看是不划算的(特此阐述一下,因为我遇到很多同学认为,频率高了,程序运行时间短了。更加要命的是,影响漏电流的因素很多,其中一点就是温度(这也很好理解,因为温度越高,电子越活跃,漏电流就越高)。
2025-06-16 17:40:51
1209
原创 任务调度器:从入门到放弃(二)
进程运行的时间横轴,以1ms为一个period周期,Li是一个调度实体在i个时间周期内的负载,虽然进程已经又运行了i个周期,它对当前系统负载仍有贡献 Li*y^i,y是衰减系数, y^32=0.5,距离当前时间点越远,衰减系数越大,对调度实体总的负载影响越小。调度器是知道这个线程1的virtual runtime的(简称V1),同时也是知道左次节点的线程2的virtual runtime(简称V2),随着线程1的在CPU上运行,线程1的virtual runtime V1一直在递增。时间远的,贡献权重小。
2025-05-30 18:00:39
1130
1
原创 任务调度器:从入门到放弃(一)
也亏了这段牛马的经历,在找工作的时候占了不少的优势。回到cgroup问题这个话题,在android系统里面,top-app、foreground、以及background分组的cpu.shares配额默认都是1024(以后会经常看到1024这个magic number,就跟我们日常用的100分制跟5分制的打分一样). 这是明显不合理的。因此大部分正常的时候,虽然系统的线程数量很多,成千上万个,但是在就绪队列里面(调度器的视野里面的)线程数量并不多(PS:CPU团队大部分都是处理的“不正常”的情况)
2025-05-23 18:01:43
1995
2
原创 ebpf工作原理介绍——ebpf指令集及虚拟机
从前两章介绍可以看到,BPF程序是运行在BPF虚拟机上的,它有自己的指令集,有虚拟机的寄存器。前面一节中介绍了BPF字节码在BPF虚拟机上执行的逻辑,即使没有本章内容,EBPF程序也可以执行起来了,但是虚拟机执行效率肯定不如真实物理机,所以现在BPF还支持JIT编译,将BPF字节码编译成本地可执行的机器指令,直接运行在真实的物理机上。其实可以根据第二章中介绍的BPF字节码中的信息可以看到,每个字节码的opcode是占据8位的,所以这里的jumptable就对应了所有的opcode的取值。
2025-05-16 18:30:47
1734
原创 自适应流媒体(ABR)技术与算法解析
Adaptive Bitrate Streaming(ABR)是一种视频流媒体技术,它能够根据用户的网络状况动态调整视频的质量和码率,以确保视频播放的流畅性和用户体验, 是现代视频流媒体服务中不可或缺的一部分,本文先是介绍了ABR的背景以及相应的协议,而后则重点探讨了ABR想要达成的目标(QoE最优)、面临的挑战以及面对相应挑战所探索出的基础算法。那么同样的,多分辨率的表示在网络状态不好时虽然尽可能的保证了用户可流畅观看的基本要求,但同样的会带来清晰度的下降问题从而影响用户的观看体验。
2025-04-18 17:30:35
1767
原创 DRM(Digital Rights Management)生态以及架构介绍
Google Widevine凭借其开放的生态系统、灵活的安全等级(L1/L3)和持续演进的技术(如Provisioning 4.0),成为流媒体领域的主流方案。未来,随着超高清内容和物联网设备的普及,DRM将更深度融入硬件与云服务,推动数字内容分发的安全与创新。随着数字内容分发方式从物理媒介(如DVD、蓝光光碟)转向在线流媒体平台,传统版权保护手段(如物理加密)已无法应对互联网环境下的盗版风险。技术应运而生,旨在通过加密、授权管理和安全传输等手段,保护数字内容在分发、存储和播放过程中的安全性。
2025-04-11 17:30:35
1353
原创 Weaver - 基于安全硬件的锁屏密码方案
Android平台上,GateKeeper+KeyMint是一种常见的密码解锁方案,基于仅用户知道的密码保护用户的数据。OMAPI服务openLogicalChannel被调用时,会先检查调用者的Access Control Rules是否存在后,才会创建和安全芯片通信的channel,这个操作会消耗大量时间。针对Weaver特性进行Channel绑定,即启动过程中访问Weaver Applet时,打开一个固定的逻辑通道不关闭,从而规避每次打开逻辑通道的时间开销,但需要安全芯片供应商做好功耗控制。
2025-03-14 17:31:00
1820
原创 提升移动游戏体验:性能和功耗的双重优化策略
根据中国音像与数字出版协会发布的《2024年中国游戏产业报告》显示,中国游戏用户规模已经达到6.74亿人,在这庞大的市场中,移动游戏实际销售收入占比为73.12%,持续稳居主导地位。这说明如今手机用户玩游戏已经是主流趋势,作为开发者必须为用户提供更好的游戏体验。在游戏体验优化这方面,可能大家第一个想到的是游戏开发商,他们必须合理利用手机系统提供的资源,给玩家流畅舒适的游玩体验。但与主机和PC游戏开...
2025-02-28 17:30:34
2704
原创 探索Android动态埋点的新视界:UprobeStats深度解析
一. 概述Android15中Google正式引入 UprobeStats,它利用Linux Kernel eBPF uprobe(用户空间探针)机制来动态获取用户进程中的埋点数据,并将其汇总至 StatsD 模块。整体架构如下:本文涉及的主要代码路径如下:https://cs.android.com/android/platform/superproject/main/+/main:packag...
2025-02-21 18:08:41
2257
原创 Android 系统服务DisplayManagerService和DisplayDevice生命周期解读
一、引言 DisplayManagerService(以下简称DMS)是 Android 系统中用于管理显示设备的核心服务。Android 早期版本中显示管理主要由SurfaceFlinger和WindowManagerService(以下简称WMS)处理 ,DMS只负责管理基本的显示设备和加载相关配置。Android 4.2中引入了多用户支持功能,每个用户可以拥有独立的显示配置,并且支持多...
2025-01-03 17:31:06
1845
原创 走进音频:器件与效果篇
1引言1.1目的和对象Android手机音频经过多年累积持续迭代,日趋完善,系统趋于稳定。但随着应用的丰富,场景的多样性,以及生态的碎片化,当前的音频架构,依然存在种种缺陷,包括历史遗留包袱。最具代表性的,诸如复杂的音量调节控制,复杂的通话路由策略,特别是蓝牙音频路由,带来的三方应用兼容性问题,始终是Android系统的核心痛点,尽管Google做了很大努力,问题依然多发。从本文开始将在内核工匠栏...
2024-12-27 17:31:10
4448
1
原创 解析H.266/VVC视频编码标准的关键技术
自上世纪90年代开始,MPEG,ITU_T发布第一代视频编码标准MPEG-1、H.261之后,过去30多年,两大标准化组织又陆续发布了多代视频编码标准,目前市场中主流的编码标准是H.264/AVC和H.265/HEVC。其中H.265/HEVC自发布以来,始终未能全面代替上一代标准H.264/AVC,其中专利是一座无法逾越的大山,总共有40多家公司持有H.265/HEVC专利,主要分为三大专利池M...
2024-12-13 17:32:37
3896
原创 ARM64裸机操作系统开发实践
--开始之前的准备一、导言 项目概述 在当今的计算设备中,操作系统(Operating System,简称OS)扮演着至关重要的角色。它连接硬件与应用软件,管理资源,提供用户界面,是现代计算机和嵌入式设备正常运行的基石。随着ARM64架构的流行,我们越来越多地在移动设备、服务器以及物联网设备中见到这种高效且性能优越的处理器架构。本文的目标是带领读者通过实践开发一个简单的裸机操作系统,能够运...
2024-12-06 17:31:33
2270
1
原创 WebRTC音视频同步原理与实现详解(下)
WebRTC音视频同步原理与实现详解(上)第四章、音视频同步实现详解4.1 音视频同步标准音视频做到什么程度才算是同步呢?关于音画同步, 业界有3个标准: 1)ITU-R BT.1359(1998):国际电信联盟标准 2)ATSC IS/191(2003):美国的数字电视国家标准 3)EBU R37(2007):欧洲广播联盟标准目前在音视频同步方面...
2024-11-29 17:28:50
2772
原创 WebRTC音视频同步原理与实现详解(上)
第一章、RTP时间戳与NTP时间戳 1.1 RTP时间戳 时间戳,用来定义媒体负载数据的采样时刻,从单调线性递增的时钟中获取,时钟的精度由 RTP 负载数据的采样频率决定。 音频和视频的采样频率是不一样的,一般音频的采样频率有 8KHz、16KHz、48KHz等,而视频反映在采样帧率上,一般帧率有 20fps、24fps、30fps等。 音视频采样后会给每个音频采样、视...
2024-11-22 17:30:18
2395
转载 近400位内核专家相聚华科,第19届CLK大会圆满落幕,硬核回放已上线
2024 年 10 月 26 日,第 19届中国 Linux 内核开发者大会(以下简称 CLK 大会)于湖北武汉成功举办,线上观看人次超8万。来自全国各地的近 400 名内核开发者相约华中科技大学,聆听讲座,共商 Linux 内核未来之发展,共享内核技术之盛宴。现在就让我们一起来回顾一下本次大会的精彩内容吧。(图/大会现场)CLK 大会举办至今已是第 19 届,由清华大学、Intel、华为、...
2024-11-01 17:01:55
1742
原创 利用ADPF性能提示优化Android应用体验
Android Dynamic Performance Framework(ADPF)是google推广的一套用于优化散热以及CPU性能的动态性能框架。本文主要介绍其中的performance hint的部分。1、为何引入ADPF我们都知道,在大多数设备上,Android 会动态调整CPU的频率和核心类型。如果work load使用的CPU资源较多,那么提升CPU的频率,工作负载最终会移至性能更强...
2024-10-25 17:30:39
2881
1
转载 ODC24 ColorOS 基础体验分论坛:系统能力再升级,重塑安卓流畅体验
引言随着智能手机硬件性能的提升,用户对手机流畅体验的要求已经不仅仅局限于基础的操作流畅,而是开始追求基础操作、动效、内容加载、画面帧率、稳定耐用等多维度的流畅。10 月 17 日,2024 OPPO 开发者大会(以下简称ODC24)在杭州举办,在 ColorOS 基础体验分论坛上,OPPO 对外展示了 ColorOS 系统能力的各项优化升级,从动效、网络、通信、多媒体等多方面为用户带来极致流畅体验...
2024-10-21 11:08:09
1366
转载 AI时代 安全护航 | OPPO,助力第八届安全开发者峰会(SDC 2024)
SDC 2024AI时代,安全不仅仅是防御和保护,而是需要与技术创新并行发展。10月23日,看雪·第八届安全开发者峰会(SDC 2024)将于上海举办!本届峰会以“AI时代 安全护航”为主题,携手业界顶尖的开发者、安全专家和技术从业人员,共同探讨AI与安全的深度融合。OPPO,将作为 SDC 2024 黄金合作伙伴盛大出席峰会,共促安全技术的创新与发展。OPPO安珀终端安全实验室,以守护智能终端安...
2024-09-20 18:09:44
1202
原创 Google VINTF机制经验总结
一、背景 Project Treble是Android8.0提出的一种新的架构,将供应商实现(Vendor)与Android操作系统框架分离开来。旨在让供应商以更低的成本更轻松、更快速地将设备更新到新版 Android 系统。Project Treble 适用于搭载 Android 8.0 及后续版本的所有新设备。二、VINTF 对象VINTF对象(Vendor Interface objec...
2024-09-06 17:00:50
1851
原创 10分钟了解OPPO中间件容器化实践
背景OPPO是一家全球化的科技公司,随着公司的快速发展,业务方向越来越多,对中间件的依赖也越来越紧密,中间件的集群的数量成倍数增长,在中间件的部署,使用,以及运维出现各种问题。1.中间件与业务应用混部在物理机,资源隔离困难2.集群申请周期长,人工介入多,交互流程复杂3.中间件整体CPU、内存、磁盘资源利用率低4.业务使用中间件资源使用难以量化,成本核算困难5.稳定性不足,故障恢复慢,步骤繁琐6.传...
2024-08-30 17:32:02
2222
原创 一文读懂高通GPU驱动渲染流程
1. gpu command分析1.1 gpu command概述SM8650平台上,GLES发送给KMD(GPU驱动)的GPU命令有两种类型:同步命令和绘制命令。绘制命令,一般都是一个个的drawcall组成的,是真正GPU程序指令,KMD会给GPU硬件进行处理。同步命令,在KMD就能处理,无需GPU硬件参与。该指令主要是往KMD的任务队列塞同步点,用来阻塞绘制指令的处理。比如dequeueBu...
2024-08-23 17:20:26
3665
原创 Linux内存管理中锁使用分析及典型优化案例总结
1技术背景 锁在Linux内存管理中起着非常重要的作用。一方面,锁在内存管理中保护了多线程的临界区并发处理; 另一方面,内存管理各种锁的使用在一些场景也会表现出性能问题。本文针对内核内存管理中典型的锁进行介绍及典型优化案例总结。本文分析基于Linux内核6.9版本(部分为低版本内核,会特别说明)。2内存管理中的锁 2.1PG_Locked Linux内核物理内存使用page进行管理,...
2024-08-09 17:31:35
3276
原创 2024年Arm最新处理器架构分析——X925和A725
关键词:X925、A725、3nm1、引言2024年5月,Arm一年一度的新处理器架构更新如期而至。今年是Arm超级大核心X计划的第五代产品,本来按照命名规则应该叫X5,但是这次Arm修改了命名规则,和A系列的命名规则做了一个对齐,新的名称叫做X925,A系列大核心新产品的名称叫做A725,小核心没有更新架构,还是A520。今年Arm新架构的指令集保持和上一年一样,还是Armv9.2架构。因为高通...
2024-07-26 17:30:41
17042
原创 virtio虚拟化框架概述
一.虚拟化背景virtio由Rusty Russell 开发,原是为支持lguest虚拟化解决方案,目前已成为linux标准的I/O虚拟化框架.本文重点分享virtio框架及学习心得,错漏之处望大家指正.先简单介绍下有关虚拟化的背景及基本术语. 虚拟化是云计算的基础架构,通过软件接口化及标准化设计,在计算机硬件上创建一个抽象层,支持将单物理机的硬件元素(处理器、内存、存储等)分成多个虚...
2024-07-19 17:47:12
2720
原创 Binder驱动中的流程详解
1.前言 作为安卓系统中重要的IPC通信机制,Binder通信使得组件之间的通信更加的高效和灵活。但在实现上,Binder通信横跨了整个Android系统架构,从应用层到frameworks,再到native,最后到底层kernel,这使得Binder流程会变得相对复杂。为了更好的理清Binder的流程,讲清楚它到底是如何通信的,本文将结合源码,完整的梳理一遍整个通信过程中的几个重要...
2024-07-12 18:05:48
2036
原创 ANR问题产生原理和分析思路总结
ANR问题是我们在开发中经常会遇到的问题。这种问题的发生往往是低概率并且难以复现,一旦发生就会给用户带来极差的体验。本文通过对ANR问题发生的原理、分析思路和案例的介绍,为分析ANR问题提供借鉴,帮助大家更好的理解和处理ANR问题。ANR问题即使应用响应超时问题,它根据发生的原因不同,主要分为KeyDispatchTimeout、BroadcastTimeout、ContentProviderTi...
2024-07-05 17:32:41
2873
原创 一文读懂QUIC 协议:更快、更稳、更高效的网络通信
你是否也有这样的困扰:打开APP巨耗时、刷剧一直在缓冲、追热搜打不开页面、信号稍微差点就直接加载失败……如果有一个协议能让你的上网速度,在不需要任何修改的情况下就能提升20%,特别是网络差的环境下能够提升30%以上;如果有一个协议可以让你在WiFi和蜂窝数据切换时,网络完全不断开、直播不卡顿、视频不缓冲;你愿意去了解一下它吗?它就是QUIC协议。本文将从QUIC的背景、原理、实践部署等方面来详细介...
2024-06-28 17:31:11
11227
1
原创 深入代码细节看f2fs在磁盘上的组织方式
一、前言之前《抛开代码细节看文件系统组织方式》一文中,主要从UFS上数据入手,通过对比大小不同的两个文件系统,以及一些常见的文件操作,对F2FS在磁盘上分布有了基础的了解。本篇文章就深入到代码细节,深入分析一下F2FS各个区域中保存内容的细节。二、superblock相关结构体2.1 Superblock相关结构体定义 2.2 superblock相关结构体注释说明2.2.1 struct ...
2024-06-14 17:30:40
1337
原创 抛开代码细节看f2fs文件系统组织方式
一、前言“文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。文件系统由三部分组成:文件系统的接口,对对象操纵和管理的软件集合,对象及属性。从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的...
2024-06-07 17:30:11
2804
原创 内核调度客制化利器:SCHED_EXT
一、前言今年年初,宋宝华老师发表了一篇对2023年内核技术总结的文章《熠熠生辉 | 2023 年 Linux 内核十大技术革新功能》。有兴趣的伙伴可以点击蓝色字体链接回顾。文章提及的10个技术中,与CPU任务调度器核心相关的内容,一共有两个,分别是可扩展调度类以及EEVDF调度算法。EEVDF调度算法的大名,相信大家并不陌生,它对统治内核任务调度多年的CFS调度策略发起了变革。CFS调度策略自Li...
2024-05-31 17:31:05
4964
原创 全方位剖析内核抢占机制
在当今数字时代,手机已成为人们日常生活中不可或缺,多任务处理和实时响应对于用户体验越来越重要,抢占(preemption)机制在提升系统性能和用户体验方面发挥了至关重要的作用。内核抢占机制使得系统能够有效地管理多任务处理,确保系统对用户操作的快速响应,并在资源紧张的情况下仍能保持稳定和流畅的运行。本篇文档旨在详细探讨Linux内核中的抢占机制,涵盖其基本概念、实现细节、性能影响以及相关的调试方法。...
2024-05-24 17:30:20
2248
原创 Linux V4L2子系统与视频编解码设备介绍
1.V4L2简介1.1 什么是V4L2V4L,其全称是Video4Linux(即Video for Linux),是Linux内核中关于视频设备的驱动框架,涉及开关视频设备,以及从该类设备采集并处理相关的音、视频信息。V4L从Linux2.1版本的内核中开始出现。现在Linux内核中用的是V4L2,即Video4Linux2(即Video for Linux Two),其是修改V4L相关...
2024-04-26 17:30:35
4300
3
转载 Linux Large Folios大页在社区和产品的现状和未来
在 Linux 内核中,一个 folio 可以只包含 1 个 page,也可以包含多个 page。当一个 folio 包含多个 page 的时候,我们称它为一个 large folio,在中文社区,我们一般称呼其为大页。采用 large folio 可潜在带来诸多好处,比如:1. TLB miss 减小,比如许多硬件都支持 PMD 映射,可以直接把 2MB 做成一个 large folio,只占用...
2024-04-19 17:30:22
2323
原创 Android中基于DWARF的stack unwind实现原理
一、简介在软件开发中,unwind stack(栈回溯 或 调用栈展开)是调试和异常处理中至关重要的一环,通过理解其实现原理,可以更好地理解程序的执行流程,更有效地进行调试和错误排查。本文主要介绍 AArch64 架构下的两种最典型的栈回溯实现方式:1.基于 frame pointer (FP) 的栈回溯2.基于 ELF DWARF .eh_frame/.debug_frame 的 stack u...
2024-04-12 17:31:49
1976
原创 Intern模型调研和Xtuner实战(下)
Intern模型调研和Xtuner实战(上)细节3:如何从dataset格式转变到Dataloder?上面已经获得了huggingface格式的dataset,原则来说,使用 Trainer 时,你可以将 datasets 库中的 Dataset 对象直接作为数据集参数传递给 Trainer。Trainer 类在内部会自动处理数据加载和迭代的细节,包括将 Dataset 转换为 DataLoade...
2024-03-29 17:30:58
1266
转载 OPPO x 西交大“智慧AI终端,安全服务未来”——泛终端安全技术论坛预告
“智慧AI终端,安全服务未来”泛终端安全技术论坛直播时间:2024年3月29日 8:50-17:00↓↓↓扫码观看直播↓↓↓直播日程直播安排01 泛终端安全技术论坛介绍由OPPO广东移动通信有限公司主办,IEEE工业电子协会、西安交通大学、安珀实验室和OPPO产学研事务部联合承办的2024 IEEE-OPPO 暨 第四届泛终端安全技术论坛定于2024年03月29日在西安交通大学创新港校区举行,旨在...
2024-03-28 14:19:10
618
原创 Intern模型调研和Xtuner实战(上)
基础资料书生浦语整个系列做得非常棒,从数据(书生万卷)、训练(xtuner)、部署(LMDeploy)、评测(OpenCompass)、应用(Lagent),为用户提供了一整套完整的开源开放生态系统。IntermLM是由上海人工智能实验室与商汤科技共同开发的大语言模型。从模型微调到部署,官方提供了详尽的文档,我结合官方提供的tutorial,在此分享我的经验。InternLM: A Multili...
2024-03-22 17:31:01
1492
原创 IO调度器详解
一、调度器演进1.1 什么是IO调度器? 传统的磁盘因为有磁头,磁头移动有开销。最早的调度器会对访问磁盘的IO做基于磁盘访问位置的排序和合并, 让磁头以最少的移动来完成最大的IO量, 以提升系统IO带宽。现在的SSD, 物理上已没有磁头的概念, 访问的位置也是LBA(Logical block address), 器件内部负责找到LBA到物理位置的映射关系。排序就没有太大...
2024-03-08 17:31:40
2539
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人