4.1. 5.0

4.1.1. Energy-aware Scheduling for ARM big.Little

终于上主线了。但删除了很多原来的功能,才能保证它能上线。Dietmar Eggemann上传的。使用了能力-能耗模型来调度::

struct capacity_state {
  unisgned long cap; //计算能力
  unisgned long power; //需要能耗
};

底层驱动报告相关信息到Energy Model Framework(em),Thermal(IPA),Scheduler(EAS)使用相关信息。perf_domain管理一组cpu。增加两个SD:sd_asym_packing/cpucapacity

成本主要在唤醒上,如果核多,要全部查一次才能决定唤醒进程调度给谁。因为它要每个CPU都算一次compute_energy()来计算如果放一个进程进来,这个CPU的功耗增加多少。这个调度算法在SD_FAIR上完成。所以数据中心这种很多核的设备不使能。测试有用例表达可以降低2%的throughput的时候降低33%功耗。

这个补丁被接受,但maintainer没有发表什么已经和参与。所以它是个进步,但不一定就表示就能成为主流。

这个功能不需要配置,自动从dts中获得参数决定是否使能。

4.1.2. Adiantum FS

非ecryptfs: 基于fuse,在用户态完成,~/.Private放加密数据,~/Private放解密数据。靠PAM在登录的时候帮你搞定(modprobe ecryptfs, ecryptfs-utils/ecryptfs-setup/mount/umount-private)是fscrypt: 用法类似,fscrypt setup/encrypt/decrypt <dir>

注册给crypto,用于低端Android设备,比如用A7的,速度可以快很多。

cgroup v2增加cpuset控制

4.1.2.1. 介绍一下cgroup v2

可以和v1共存,独立控制:

mount -t cgroup2 none /my_cgroup_v2

/proc/<pid>/cgroup有两个版本的信息,表示进程在哪个控制器的控制下(可多个),格式:controller_id:name:/path其中v2的格式没有中间的name,这样::

conroller_id::/path

4.1.3. 其他

Android binder现在变成一个文件系统了。这样通过多文件系统,就可以支持多个Android实例。ARM8.3 PAUTH Kristina Martsenko(但ARM的kernel组好像都参与开发了)每个进程有一个随机的Key,给这个进程的指针带这个key,通过ptrace可以改,看来这是一个基本修改

这个版本提到Hisi的只有陈祥的sas的一个小补丁。

4.1.4. 参考

[1] https://kernelnewbies.org/LinuxChanges