写点什么

OpenHarmony 标准系统内核学习【2】CPU 轻量级隔离特性

作者:离北况归
  • 2023-02-07
    江西
  • 本文字数:2340 字

    阅读完需:约 8 分钟

CPU 轻量级隔离特性

基本概念

  • CPU 轻量级隔离特性提供了根据系统负载和用户配置来选择合适的 CPU 进行动态隔离的能力。

  • 内核会将被隔离 CPU 上的任务和中断迁移到其他合适的 CPU 上执行

  • 被隔离的 CPU 会进入 ilde 状态,以此来达到功耗优化的目标。同时提供用户态的配置和查询接口来实现更好的系统调优。


ilde 状态: 现代处理器通常能够进入这样的状态——程序的执行被暂停,而且属于它的指令不从内存中提取或执行。参考文档:https://www.kernel.org/doc/html/v5.10/admin-guide/pm/cpuidle.html

配置指导

使能 CPU 轻量级隔离特性

  • 启用 CPU 轻量级隔离,需要通过编译内核时打开相应的配置项及依赖,相关 CONFIG 如下:rk3568 芯片组件 config:kernel/linux/config/linux-5.10/arch/arm64/configs/rk3568_standard_defconfig


CONFIG_CPU_ISOLATION_OPT=yCONFIG_SCHED_CORE_CTRL=y# 另有部分CONFIG被依赖CONFIG_SMP=yCONFIG_SCHED_WALT=y
复制代码

引入动态核隔离的内核基础设施以及对应的用户态接口

  • CPU 轻量级隔离特性与kernel_linux_5.10引入动态核隔离的内核基础设施以及对应的用户态接口相关。

  • 支持隔离核场景和解除隔离核场景。

  • 隔离核:内核根据接口配置值对隔离核上非绑定在本核上的任务进行迁移,放到 affinity 中其它隔离核上执行。

  • 解除隔离核:内核根据接口配置值以及系统负载解除核隔离,任务可以在该核上执行。

  • 合入的相关 issues 如下:https://gitee.com/openharmony/kernel_linux_5.10/issues/I4SRVK?from=project-issue

  • 合入的内核部分代码如下:https://gitee.com/openharmony/kernel_linux_5.10/pulls/54/files 涉及文件如下

相关接口

CPU 轻量级隔离提供了一些接口用于控制 CPU 隔离核的个数以及记录当前状态,支持以 CPU cluster 层级进行配置,这些接口位于每个 CPU cluster 的首个 CPU 设备信息目录中,如/sys/devices/system/cpu/cpu0/core_ctl




使用 CPU 轻量级隔离接口

使用 hdc_std 工具进入 rk3568 开发板终端,RK3568 CPU 为四核 A55


  • 查看 CPU 轻量级隔离功能开关状态


cat /sys/devices/system/cpu/cpu0/core_ctl/enable
复制代码



  • 开关 CPU 轻量级隔离功能


echo 0 > /sys/devices/system/cpu/cpu0/core_ctl/enableecho 1 > /sys/devices/system/cpu/cpu0/core_ctl/enable
复制代码



  • 设置活跃 CPU 最小核数和最大核数


echo 0 > /sys/devices/system/cpu/cpu0/core_ctl/min_cpusecho 4 > /sys/devices/system/cpu/cpu0/core_ctl/max_cpus
复制代码



  • 显示当前已经动态隔离的 CPU 核


cat /sys/devices/system/cpu/core_ctl_isolated
复制代码



  • 显示当前未隔离和 CPU cluster 最终计算需要的 CPU 核数


cat /sys/devices/system/cpu/cpu0/core_ctl/active_cpus  cat /sys/devices/system/cpu/cpu0/core_ctl/need_cpus  
复制代码



  • 显示系统记录的所有 CPU cluster 的状态信息


cat /sys/devices/system/cpu/cpu0/core_ctl/global_state
复制代码

OpenHarmony 标准系统内核支持的其它特性

OpenHarmony 标准系统内核支持统计各个进程的 dma-buf 占用

  • 数据收集:在 dmabuf export 的时候(创建时),记录 exporter(申请者)的 pid、进程名等信息。

  • 展示:新增以下两个内核节点用于展示,显示每个进程占用的 dmabuf objects 信息:包括 dmabuf object 的大小、对应 inode、申请者、exp_name 等所需信息。

  • /proc/process_dmabuf_info 与 /sys/kernel/debug/dma_buf/process_bufinfo 两个节点功能相同。


OpenHarmony 标准系统内核支持 Blackbox

  • rk3568 上 DFX 支持了 Blackbox 功能,大部分情况下,可以记录重启前最后时刻的内核日志,路径为/data/log/bbox

  • Blackbox 的功能会在设备挂掉的时候保存现场,内核相关的 config:


内核编译选项查看:zcat /proc/config.gz/proc/config.gz 就是标准系统内核配置文件,用 gzip 格式压缩过。只有当内核配置 CONFIG_IKCONFIG 和 CONFIG_IKCONFIG_PROC 为 y,才会在 /proc 中出现 config.gz 文件。


  • 相关 issues:https://gitee.com/openharmony/kernel_linux_config/issues/I4WRTR

trace 目录

/sys/kernel/debug/tracing
复制代码

cpuset 与 cpu 热插拔解耦

https://gitee.com/openharmony/kernel_linux_5.10/issues/I4LKQ0?from=project-issue


# cd/ dev/cpuset# lsbackground              cpuset.memory_pressure_enabledcgroup.clone_children   cpuset.memory_spread_pagecgroup.procs            cpuset.memory_spread_slabcgroup.sane_behavior    cpuset.memscpuset.cpu_exclusive    cpuset.sched_load_balancecpuset.cpus             cpuset.sched_relax_domain_levelcpuset.effective_cpus   foregroundcpuset.effective_mems   notify_on_releasecpuset.mem_exclusive    release_agentcpuset.mem_hardwall     system-backgroundcpuset.memory_migrate   taskscpuset.memory_pressure  top-app# cat cpuset.cpus0-3
复制代码

知识点附送

  • 查看系统支持的 CPU 核心与在线的核心数


cat /sys/devices/system/cpu/presentcat /sys/devices/system/cpu/online
复制代码


  • 查看系统支持的 CPU 离线的状态


cat /sys/devices/system/cpu/offline
复制代码


  • 查看系统支持的 CPU 在线的状态


cat /sys/devices/system/cpu/cpu0/online
复制代码


  • 开关 CPU 核心


echo 1 > /sys/devices/system/cpu/cpu0/onlineecho 1 > /sys/devices/system/cpu/cpu1/onlineecho 0 > /sys/devices/system/cpu/cpu2/onlineecho 0 > /sys/devices/system/cpu/cpu3/online
复制代码


  • 查看 CPU 信息


cat /proc/cpuinfo   
复制代码


  • 查看计算机名


hostname        
复制代码


  • 查看内核/操作系统/CPU 信息


uname -a        
复制代码


  • 查看网卡信息


dmesg | grep -i eth
复制代码


  • cpu 相关接口


# cd /sys/devices/system/cpu# lscore_ctl_isolated  cpu3     isolated    online    smtcpu0               cpufreq  kernel_max  possible  ueventcpu1               cpuidle  modalias    power     vulnerabilitiescpu2               hotplug  offline     present
复制代码

看内核资讯

https://lwn.net/

发布于: 刚刚阅读数: 3
用户头像

离北况归

关注

还未添加个人签名 2022-03-26 加入

OpenHarmony啃论文俱乐部PIMF团队。 位于南京一学生,可私信。

评论

发布
暂无评论
OpenHarmony标准系统内核学习【2】CPU轻量级隔离特性_OpenHarmony_离北况归_InfoQ写作社区