作者:OPPO内核团队 · 发布于 2022-06-29 06:33
· 内核同步机制
本站之前已经有了一篇关于 spinlock 的文档,在之前的文章中有对自旋锁进行简单的介绍,同时给出了API汇整和应用场景。不过该文章中的自旋锁描述是基于比较老的内核版本,那时候的自旋锁还是ticket base锁,而目前最新内核中的自旋锁已经进化成queued spinlock,因此需要一篇新的自旋锁文档来跟上时代。此外,本文将不再描述基本的API和应用场景,主要的篇幅将集中在具体的自旋锁实现上
作者:OPPO内核团队 · 发布于 2022-05-10 05:55
· 内核同步机制
在linux内核中,互斥量(mutex,即mutual exclusion)是一种保证串行化的睡眠锁机制。和spinlock的语义类似,都是允许一个执行线索进入临界区,不同的是当无法获得锁的时候,spinlock原地自旋,而mutex则是选择挂起当前线程,进入阻塞状态。本文代码来自Linux 5.10.61,文章中的代码片段有删减,阅读本文时可以参考源代码。
作者:OPPO内核团队 · 发布于 2022-04-26 06:29
· 进程管理
这是一篇分析schedutil governor(后文称之sugov)代码逻辑的文章。通过详细的代码级别的分析,希望能够帮助读者理解sugov的代码精妙之处。本文主要分四个章节:第一章简单重复了sugov相关的软件结构和基本算法,让读者对整个sugov在系统所处的位置和基本的逻辑控制有所了解。第二章对sugov使用的数据结构给出了详细的解释。第三章对sugov和cpufreq core的基本数据流
作者:OPPO内核团队 · 发布于 2022-04-07 07:09
· 进程管理
Linux是一个通用操作系统的内核,她的目标是星辰大海,上到网络服务器,下至嵌入式设备都能运行良好。做一款好的linux进程调度器是一项非常具有挑战性的任务,因为设计约束太多了: ---它必须是公平的 ---快速响应 ---系统的throughput要高 ---功耗要小 3.8版本之前的内核CFS调度器在计算CPU load的时候采用的是跟踪每个运行队列上的负载(per-rq load track
作者:OPPO内核团队 · 发布于 2022-02-16 07:29
· 进程管理
我们描述CFS任务负载均衡的系列文章一共三篇,第一篇是框架部分,第二篇描述了task placement和active upmigration两个典型的负载均衡场景,第三篇是负载均衡的情景分析,包括tick balance、nohz idle balance和new idle balance。在负载均衡情景分析文档最后,我们给出了结论:tick balancing、nohz idle balanc
作者:heaven · 发布于 2022-02-11 01:34
· ARMv8A Arch
今天我想分享一个跟多核锁原理相关的东西,由于我搞 arm 居多,所以目前只研究了 arm 架构下的 WFE 指令,分享出来,如果有表述不精准或者错误的地方还请大家指出,非常感谢。研究这个原因也是只是想搞清楚所以然和来龙去脉,以后写代码可以更游刃有余。
作者:OPPO内核团队 · 发布于 2021-12-31 07:00
· 进程管理
我们描述CFS任务负载均衡的系列文章一共三篇,第一篇是框架部分,第二篇描述了task placement的逻辑过程,第三篇是负载均衡的情景分析,包括tick balance、nohz idle balance和new idle balance。之前已经有一篇关于task placement的文档发表在本站,为了更精细的讲解代码逻辑,我们这次增加了代码分析部分。本文作为第二篇任务放置的附篇,深入讲解
作者:OPPO内核团队 · 发布于 2021-11-22 20:49
· 进程管理
我们描述CFS任务负载均衡的系列文章一共三篇,第一篇是框架部分,第二篇描述了task placement和active upmigration两个典型的负载均衡场景。本文是第三篇,主要是分析各种负载均衡的触发和具体的均衡逻辑过程。 本文出现的内核代码来自Linux5.10.61,为了减少篇幅,我们尽量删除不相关代码,如果有兴趣,读者可以配合代码阅读本文。
作者:schspa · 发布于 2021-11-15 19:42
· ARMv8A Arch
在Linux内核中看到下面这句话: At least on ARM, pgprot_noncached causes the memory to be mapped strongly ordered, and atomic operations on strongly ordered memory are implementation defined, and won't work on many
作者:schspa · 发布于 2021-11-15 18:41
· 电源管理子系统
在本篇文章中基于AARCH64平台,GIC作为中断控制器来进行讨论 下面是GIC-600的系统框架图: