CPU轻量级隔离个性
基本概念
CPU轻量级隔离个性提供了依据零碎负载和用户配置来抉择适合的CPU进行动静隔离的能力。
- 内核会将被隔离CPU上的工作和中断迁徙到其余适合的CPU上执行
- 被隔离的CPU会进入ilde状态,以此来达到功耗优化的指标。同时提供用户态的配置和查问接口来实现更好的零碎调优。
ilde状态: 古代处理器通常可能进入这样的状态——程序的执行被暂停,而且属于它的指令不从内存中提取或执行。
参考文档:https://www.kernel.org/doc/ht...
配置领导
使能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...
- 合入的内核局部代码如下:https://gitee.com/openharmony... 波及文件如下
相干接口
CPU轻量级隔离提供了一些接口用于管制CPU隔离核的个数以及记录以后状态,反对以CPU cluster层级进行配置,这些接口位于每个CPU cluster的首个CPU设施信息目录中,如/sys/devices/system/cpu/cpu0/core_ctl
性能分类 | 接口名 | 形容 |
---|---|---|
管制接口 | enable | 性能开关,1示意开启,0示意敞开 |
min_cpus | 设置沉闷(未隔离)CPU最小核数 | |
max_cpus | 设置沉闷(未隔离)CPU最大核数,其中最大值为CPU cluster蕴含的CPU个数 | |
状态接口 | active_cpus | 显示CPU cluster最终计算须要的CPU核数 |
need_cpus | 显示以后须要解隔离的CPU核数 | |
global_state | 记录零碎所有CPU cluster的状态信息,蕴含CPU 隔离状态,online状态以及负载信息等。 |
应用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...
trace目录
/sys/kernel/debug/tracing
cpuset与cpu热插拔解耦
https://gitee.com/openharmony...
# 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/