JasonWang's Blog

JasonWang's Blog

「置顶」收藏的学习资料

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

基础

高通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开发中常用的一些性能优化工具的使用方法,主要包括如下几个工具:

虚拟化之三virtio的实现原理

在讲虚拟化的第二篇QNX系统时,提到在QNX中设备的虚拟化有直通(pass-through)、半虚拟化(para-virtulization)、全虚拟化(full-virtualization)等几种形式,而像串口、网络设备、块设备等通常都是基于半虚拟化的形式实现的。在半虚拟化的实现方案中,virtio是最常见的一种。简单来说,virtio是虚拟化设备的中间抽象层,为设备的虚拟化提供了一个统一的框架与接口,增加了跨平台时代码的复用性。

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