想了解更多关于开源的统内内容,请访问:
51CTO 开源基础软件社区
https://ost.51cto.com
CPU轻量级隔离特性提供了根据系统负载和用户配置来选择合适的核学CPU进行动态隔离的能力。
ilde状态: 现代处理器通常能够进入这样的状态——程序的执行被暂停,而且属于它的统内指令不从内存中提取或执行。
参考文档:https://www.kernel.org/doc/html/v5.10/admin-guide/pm/cpuidle.html
启用CPU轻量级隔离,核学需要通过编译内核时打开相应的习C性配置项及依赖,相关CONFIG如下:
rk3568芯片组件config:kernel/linux/config/linux-5.10/arch/arm64/configs/rk3568_standard_defconfig
CONFIG_CPU_ISOLATION_OPT=y
CONFIG_SCHED_CORE_CTRL=y
# 另有部分CONFIG被依赖
CONFIG_SMP=y
CONFIG_SCHED_WALT=y
CPU轻量级隔离特性与kernel_linux_5.10引入动态核隔离的内核基础设施以及对应的用户态接口相关。
支持隔离核场景和解除隔离核场景。离特
合入的相关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
功能分类 | 接口名 | 描述 |
控制接口 | 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状态以及负载信息等。 |
使用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/enable
echo 1 > /sys/devices/system/cpu/cpu0/core_ctl/enable
设置活跃CPU最小核数和最大核数
echo 0 > /sys/devices/system/cpu/cpu0/core_ctl/min_cpus
echo 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
/proc/process_dmabuf_info 与 /sys/kernel/debug/dma_buf/process_bufinfo 两个节点功能相同。
内核编译选项查看: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
https://gitee.com/openharmony/kernel_linux_5.10/issues/I4LKQ0?from=project-issue
# cd/ dev/cpuset
# ls
background cpuset.memory_pressure_enabled
cgroup.clone_children cpuset.memory_spread_page
cgroup.procs cpuset.memory_spread_slab
cgroup.sane_behavior cpuset.mems
cpuset.cpu_exclusive cpuset.sched_load_balance
cpuset.cpus cpuset.sched_relax_domain_level
cpuset.effective_cpus foreground
cpuset.effective_mems notify_on_release
cpuset.mem_exclusive release_agent
cpuset.mem_hardwall system-background
cpuset.memory_migrate tasks
cpuset.memory_pressure top-app
# cat cpuset.cpus
0-3
查看系统支持的CPU核心与在线的核心数
cat /sys/devices/system/cpu/present
cat /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/online
echo 1 > /sys/devices/system/cpu/cpu1/online
echo 0 > /sys/devices/system/cpu/cpu2/online
echo 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
# ls
core_ctl_isolated cpu3 isolated online smt
cpu0 cpufreq kernel_max possible uevent
cpu1 cpuidle modalias power vulnerabilities
cpu2 hotplug offline present
想了解更多关于开源的内容,请访问:
51CTO 开源基础软件社区
https://ost.51cto.com
责任编辑:jianghua 来源: 51CTO 开源基础软件社区 CPU轻量级隔离鸿蒙(责任编辑:热点)
6000元价位投影仪终极PK,灯泡/LED/激光,谁是最优选择?
上海聚告德业广告有限公司确认参展2018ChinaJoy BTOB