JasonWang's Blog

JasonWang's Blog

「置顶」收藏的学习资料

以下是从事软件开发以来收藏的资料/书籍/网站, 欢迎推荐~

基础

Linux实时调度踩到的哪些坑

早期Linux内核的调度更多考虑的是系统调度的公平与吞吐量,对于实时性的支持并不友好。为了改善系统的响应时间,降低某些场景下实时任务的调度延迟,从2.6版本开始支持了实时调度与抢占功能,开发人员为此专门建立了一个实时Linux的网站,上面提供了实时内核的一些历史状态与补丁信息。实时调度对于音视频、UI渲染等对时间非常敏感的任务来说,非常必要。比如对于Android平台,会将音频、渲染相关的一些核心任务的调度策略设置为实时调度,这样可以减少系统调度延迟与任务抢占带来的延时。Linux内核中的实时调度主要有两种调度策略:

  • SCHED_FIFO: 先入先出,即优先级高的任务优先执行,不会被其他任务抢占,直到对应的任务阻塞或者主动释放CPU
  • SCHED_RR: 轮询(也称随机轮盘)调度,相同优先级的任务轮流执行相同的时间片,时间片用完后会调度其他的任务

本文基于Linux内核5.10版本分析

高通QNX平台DCVS介绍

目前智能座舱领域的方案中,高通的两大平台8155/8295占据了大部分的市场份额,这两个硬件平台都是基于QNX系统的虚拟化方案实现的,就是说中控域与仪表域都跑在一个系统上了-座舱通常是Android系统,实际是QNX上的一个虚拟机;而仪表通常是运行在QNX侧。跟传统的单Android系统比较来看,QNX虚拟化平台有很多的变化,比如很多物理驱动与系统服务都跑在了QNX上,而Android上看到的只是一个虚拟的设备,或者压根就去掉了,比如本文要讲到的动态调频与调压功能DCVS(Dynamic Clock and Voltage Scaling)就是一个例子,这个功能在Android上已经没有了,所有的调频与调压功能都在QNX上实现。

DCVS也可将其称为DVFS(Dynamic Voltage and Frequency Scaling)实际都是根据系统负载动态调整CPU/GPU/DDR等工作频率与电压,从而减少功耗

接下来,我们就一起看看高通QNX平台的DCVS功能是如何实现的,以及如何在QNX平台查看CPU, GPU,UFS,DDR的频率。

生命与宇宙-看《时间简史》的感想

我们发现自己处于令人困惑的世界中。我们要理解周围所看到的一切的含义,并且询问:宇宙的本质是什么?我们在其中的位置如何,以及宇宙和我们从何而来?宇宙为何是这个样子?

    史蒂芬-霍金

black-hole

Android如何使用PSI管理内存

早前,Android使用内核中的lowmemorykiller驱动模块来监控系统内存,在内存不足时会主动杀掉某些非关键性的进程或者应用,从而减少系统的内存压力;自从内核版本4.12之后,lowmemorykiller从内核中移除了,因此Android增加一个lmkd(Low Memory Killer Daemon)来替代内核驱动用以监控系统内存状态,在系统处于内存高压状态时,主动清理部分内存,确保内存水位处于可接受的状态。那么,LMKD又是如何获取系统内存压力状态的了?这个就要说到PSI(Pressure stall information)这个内核模块了。

如何利用cgroups优化Android系统性能

cgroups(Control Groups)即控制分组,是Linux中的一种进程资源分组访问控制机制,用于将系统中的进程划分为不同的分组(形成一种树状层级的结构),利用不同的分组可以实现对各个进程的资源使用,如CPU、IO、内存、网络等系统资源进行优先级管理,可以确保在系统资源紧张的情况下,高优先级的进程可以获得更多的系统资源。简单来说,通过cgroups,我们可以实现对系统资源的分配、访问优先级、访问限制以及管理、监控等更精细的控制,从而提升系统的性能。本文主要介绍Android系统如何利用cgroups来改善系统性能,主要分为以下几个部分:

  • 简单介绍cgroup的实现原理
  • Android中的cgroup分组管理策略
  • 如何利用cgroup优化Android系统性能
如何移植fio到Android平台

fio是一个广泛使用的磁盘性能测试工具,功能强大,可以用于测试磁盘性能,也可以通过I/O重放来模拟用户的实际请求,其主要有如下几个特点:

  • 支持多种文件系统,包括NTFS,ext4,btrfs,xfs等
  • 支持多种IO模式,包括randwrite,read,write,dd,trim,flush,discard等
你好,2024

Nothing is easier than self-deceit. For what each man wishes, that he also believes to be true(人们善于自欺,人们想得到什么,就会相信什么)

德摩斯梯尼(Demosthenes,古希腊)

new year fireworks

Android常用的性能分析工具

在Android系统开发过程中,经常碰到CPU占用率高、内存泄露、内存占用高等性能相关的问题,这时通常需要抓取系统的trace日志,用以查看进程的CPU占用,内存分配等情况。怎么抓取系统trace, 这时一般需要用到系统性能相关的分析工具。这篇文章就以Android S为例,说明Android开发中常用的一些性能优化工具的使用方法,主要包括如下几个工具:

avatar
JasonWang
生命短暂,莫空手而归