随笔分类 - performance
摘要:简介 某次调图形性能的时候(启动后台录屏,下(或)称case)发现Android SurfaceFlinger Vsync机制并没有以前想的这么简单粗糙,特别是这次调图形性能发现一些跟Vsync有关联,因此做个总结详解。 跟不上旋律节奏的VSYNC 一份追踪报告,发现Vsync信号非常不规律,于是从
阅读全文
摘要:怎么定义掉帧? Systrace 中可以看到应用的掉帧情况,我们经常看到说主线程超过 16.6 ms 就会掉帧,其实不然,这和我们这一篇文章讲到的 Triple Buffer 和一定的关系,一般来说,Systrace 中我们从 App 端和 SurfaceFlinger 端一起来判断掉帧情况 App
阅读全文
摘要:Android 手机使用中的卡顿问题 , 一般来说手机厂商和 App 开发商都会非常重视 , 所以不管是手机厂商还是 App 开发者 , 都会对卡顿问题非常重视 , 内部一般也会有专门的基础组或者优化组来进行优化 . 目前市面上有一些非常棒的第三方性能监控工具 , 比如腾讯的 Matrix ; 手机
阅读全文
摘要:bw_mem:测试内存带宽。 bw_mem 是 lmbench 套件中的一个工具,用于测试内存带宽。以下是 bw_mem 的使用选项: -P <parallelism>:指定并行度,即同时进行读写操作的线程数,默认为1。 -W <warmups>:指定预热时间,即测试前先进行一段时间的数据填充以缓存
阅读全文
摘要:systrace的一些tag标签的含义和作用。 1. CPU*(0-7) Kernel内核模块,可以查看各个CPU执行了什么进程任务。 cpu信息的目录是/sys/devices/system/cpu,例如我的一加六老设备: OnePlus6:/sys/devices/system/cpu $ ls
阅读全文
摘要:当我们使用top命令查看系统的资源使用情况时会看到 load average,如下图所示。它表示系统在1、5、15分钟的平均工作负载。那么什么是负载(load)呢?它和CPU的利用率又有什么关系呢? load average:系统平均负载是CPU的Load,它所包含的信息不是CPU的使用率状况,而是
阅读全文
摘要:前言 上篇博客介绍了iostat的一些输出,这篇介绍blktrace这个神器。上一节介绍iostat的时候,我们心心念念希望得到块设备处理io的service time,而不是service time + wait time,因为对于评估一个磁盘或者云磁盘而言,service time才是衡量磁盘性
阅读全文
摘要:第一种方法 使用这个转换成ftrace数据 第二种方法 是的,systrace --from-file 是一种方便的方法,用于处理已经生成的 trace 文件(比如 systrace.html 或其他格式),包括提取或转换数据。以下是如何使用 systrace --from-file 来尝试转换为
阅读全文
摘要:本文是 Systrace 线程 CPU 运行状态分析技巧系列的第三篇,本文主要讲了使用 Systrace 分析 CPU 状态时遇到的 Sleep 与 Uninterruptible Sleep 状态的原因排查方法与优化方法,这两个状态导致性能变差概率非常高,而且排查起来也比较费劲,网上也没有系统化的
阅读全文
摘要:adb shell stop thermald adb shell stop thermal-engine adb shell "echo 4 > /sys/devices/system/cpu/cpu0/core_ctl/min_cpus" adb shell "echo 4 > /sys/dev
阅读全文
摘要:本文是 Systrace 系列文章的第七篇,主要是是介绍 Android 中的 Vsync 机制。文章会从 Systrace 的角度来看 Android 系统如何基于 Vsync 每一帧的展示。Vsync 是 Systrace 中一个非常关键的机制,虽然我们在操作手机的时候看不见,摸不着,但是在 S
阅读全文
摘要:简介 Dhrystone是测量处理器运算能力的最常见基准程序之一,常用于处理器的整型运算性能的测量。程序是用C语言编写的,因此C编译器的编译效率对测试结果也有很大影响。 Dhrystone是由Reinhold P. Weicker在1984年提出来的一个基准测试程序,其主要目的是测试处理器的整数运算
阅读全文
摘要:背景 某轮测试发现,我们的设备运行一个第三方的App时,卡顿感非常明显: 界面加载很慢,菊花转半天 滑屏极度不跟手,目测观感帧率低于15 对比机(竞品)也会稍微一点卡,但是好很多,基本不会有很大感觉的卡顿 可以初步判定我们的设备存在性能问题,亟需优化,拉平到竞品水准。 最后发现,这个问题实际上是应用
阅读全文
摘要:本文介绍了 App 开发者不经常接触到但是在 Android Framework 渲染链路中非常重要的一个类 Choreographer。包括 Choreographer 的引入背景、Choreographer 的简介、部分源码解析、Choreographer 与 MessageQueue、Chor
阅读全文
摘要:systemd-analyze简介 systemd-analyze是Linux自带的分析系统启动性能的工具。 systemd-analyze可使用的命令: systemd-analyze [OPTIONS…] [time] systemd-analyze [OPTIONS…] blame syste
阅读全文
摘要:在 Android 中,Render 线程(也称为渲染线程)是一个专门用于处理 UI 绘制和动画的线程。它的主要职责是确保用户界面在屏幕上流畅且高效地呈现。这个线程的引入是为了将渲染任务从主线程(UI 线程)中分离出来,以避免主线程因过多任务阻塞而导致界面卡顿或无响应的情况。 Render 线程的主
阅读全文
摘要:在 Android 中,VSYNC(Vertical Synchronization)是一个垂直同步信号,用于协调显示刷新和绘图操作。VSYNC 信号的主要作用是控制屏幕刷新频率与图形渲染的同步,以确保画面显示平滑且没有撕裂现象。 VSYNC 的工作原理 显示刷新周期:屏幕的刷新率(通常为 60Hz
阅读全文
摘要:此篇将重点介绍几种常用的Android性能分析工具: 一、Logcat 日志 选取Tag=ActivityManager,可以粗略地知道界面Displaying的时间消耗。当我们打开一个Activity的时候,log会打印一串log如下: I/ActivityManager﹕ Displayed x
阅读全文
摘要:安卓go平台启动时间发现如下ueventd耗时1.907s问题: 01-11 00:20:02.854 0 0 I init : Parsing file /odm/etc/init... 01-11 00:20:02.854 0 0 E init : Unable to open '/odm/et
阅读全文
摘要:SchedTune SchedTune是一项与CPU调频相关的性能提升技术,它实现为一个cgroup控制器。 这个控制器提供了一个名称为schedtune.boost的配置参数,运行时系统可以使用它来更改该组中的进程的调度方式。 每当调整这个参数的时候,它会使受影响的进程看起来比实际更重(或更轻)。
阅读全文


浙公网安备 33010602011771号