OpenHarmony標準系統內核學習(二)—CPU輕量級隔離特性
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
引入動態核隔離的內核基礎設施以及對應的用戶態接口
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
功能分類 | 接口名 | 描述 |
控制接口 | 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輕量級隔離功能開關狀態
開關CPU輕量級隔離功能
設置活躍CPU最小核數和最大核數
顯示當前已經動態隔離的CPU核
顯示當前未隔離和CPU cluster最終計算需要的CPU核數
顯示系統記錄的所有CPU cluster的狀態信息
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
cpuset與cpu熱插拔解耦
??https://gitee.com/openharmony/kernel_linux_5.10/issues/I4LKQ0?from=project-issue??
知識點附送
查看系統支持的CPU核心與在線的核心數
查看系統支持的CPU離線的狀態
查看系統支持的CPU在線的狀態
開關CPU核心
查看CPU信息
查看計算機名
查看內核/操作系統/CPU信息
查看網卡信息
cpu相關接口