摘要:
一、kprobes是什么 kprobes是一种基于动态插桩的底层机制,它能动态地插入几乎任何kernel路径,不修改分析对象源码地情况下,来收集debug和性能数据。你可以通过kprobes陷入几乎所有kernel函数地址[1],当该kernel函数被调用时,如果已经定义了一个与之绑定handler 阅读全文
摘要:
前面一篇负载均衡文章中分析了periodic load balance,主要跟踪了其代码框架和流程。其中在load_balance函数中,会进行多次task 迁移尝试,如果多次尝试后仍然失败,那么就会判断是否需要进行更加激进的balance。 而激进的balance其中就包含了active load 阅读全文
摘要:
在内存管理中,我们知道buddy伙伴系统;在进程调度中,也有一个CFS buddy的概念,但是CFS buddy与内存管理的buddy是不太一样的。这次我们就一起来简单看一下CFS buddy是什么。 代码基于CAF-kernel-4.19以及kernel-5.4,不免有错误之处,请指正。 一、数据 阅读全文
摘要:
负载均衡(Load balance),是为了将执行task的工作量较平均地配分到每个cpu上,达到功耗和性能平衡的一种机制。比如很多task都只放在cpu0上执行,既不能保证节省功耗(因为负载中,需要提升cpu频率;整体执行时间长),也不能保证task及时执行,从而导致卡顿,且耗电。而有了负载均衡就 阅读全文
摘要:
只写总结了,哈哈偷懒,代码以前分析的没记录下来: 初始化cfs bandwidth相关结构体和定时器 在cfs rq入rq(enqueue_entity)时申请slice。特别地,如果时第一次申请slice, 会同事开启period timer监控 在每次scheduler_tick时,检查剩余运行 阅读全文
摘要:
只写总结了,哈哈偷懒,代码以前分析的没记录: 在 各个调用cpufreq_update_util()的路径中,会带有不同的flag,并触发cpu freq调节 cpu util作为计算cpu调节target freq的重要依据,首先会从系统中获取;其原始值对应WALT中:prev_runnable_ 阅读全文
摘要:
CPU,即中央处理器,它最有用的属性就是算力性能。通过之前的知识学习,了解了linux kernel中对cpu算力形象化的表示:cpu capacity。 1、从cpu拓扑结构、sched_doamin/sched_group的建立过程来看,就包含了对cpu capcity的初始建立。 2、而cpu 阅读全文
摘要:
如今CPU的核数从单核,到双核,再到4核、8核、甚至10核。但是我们知道Android使用的多核架构都是分大小核,或者现在最新的,除了大小核以外,还有一个超大核。 区分大小核,是因为它们之间的性能(算力),功耗是不同的,而且它们又以cluster来区分(小核在一个cluster,大核在另一个clus 阅读全文
摘要:
调度中的负载概念,与平时熟知的cpu占用率并不是一回事,两者间有较大差别。本文分析了cpu负载和系统负载,并非CPU使用率。代码基于CAF- SM8250 - kernel 4.19。 负载计算中,其实主要分为3大部分,由小到大依次为: 1、调度实体负载:update_load_avg() PELT 阅读全文
摘要:
最近参加了一个android的submmit,完全英文,语速贼快,每个演讲的人口音千奇百怪。关键的是,我要做这个视频的summary!还要比较详细!!! 硬着头皮听了几句,个别单词能懂,但是最后几个词,演讲者都轻微带过。导致整句意思拿捏不准。于时,就动起了“歪脑筋”:自动生成字幕 很简单,百度之后, 阅读全文