OpenHarmony 4.1 Release版本获取cpu维测信息功能适配参考
1、背景 在 4.0 Release 版本中,c++代码可以直接通过读取/proc/stat 节点,获取cpu维测信息。但在4.1 Release 版本上,此操作无法正常获取。 2、根因分析 在 4.0 Release 版本中,是直接通过遍例所有进程的结点虽然可以获取所有进程的CPU使用率,但是该方法性能相对较差
1、背景
在 4.0 Release 版本中,c++代码可以直接通过读取/proc/stat 节点,获取cpu维测信息。但在4.1 Release 版本上,此操作无法正常获取。
2、根因分析
在 4.0 Release 版本中,是直接通过遍例所有进程的节点虽然可以获取所有进程的CPU使用率,但是该方法性能相对较差。在 4.1Release中为了提升获取效率,开辟了内核的设备节点 ucollection
,通过节点可快速获取CPU的数据。
3、适配方法
如果代码更新至4.1release后,无法使用hidumper --cpuusage
,则需要先确认自己的代码目前处于什么状态,可以参考下列pr进行排查
https://gitee.com/openharmony/hiviewdfx_hiview/pulls/1047
https://gitee.com/openharmony/hiviewdfx_hiview/pulls/1048
https://gitee.com/openharmony/kernel_linux_common_modules/pulls/45
https://gitee.com/openharmony/kernel_linux_5.10/pulls/1037
https://gitee.com/openharmony/kernel_linux_5.10/pulls/1068
确认以上pr均已合入后,还需确保在你的内核编译脚本中已添加新增的 ucollction
模块编译,可以参考如下代码:
...
UNIFIED_COLLECTION_PATCH_FILE=${ROOT_DIR}/kernel/linux/common_modules/ucollection/apply_ucollection.sh
...
#ucollection
if [ -f $UNIFIED_COLLECTION_PATCH_FILE ]; then
bash $UNIFIED_COLLECTION_PATCH_FILE ${ROOT_DIR} ${KERNEL_SRC_TMP_PATH} ${DEVICE_NAME} linux-5.10
fi
完成上述工作后,适配也完成到最后一步:在产品的defconfig文件中添加 CONFIG_UNIFIED_COLLECTION=y
。
至此准备工作完毕,先将out目录下的kernel删除(避免内核代码未更新,在oh子系统中,不会自动检测内核代码变动,若out目录下存在内核代码,则会优先编译该部分),重新编译产品镜像。
将新镜像烧录至设备后,进入hdc shell,先检查是否生成了 /dev/ucollection
节点。
若已生成,可以执行 hidumper --cpuusage
,若能输出如下内容,则表明适配成功。
如果有需求,要在自己适配的应用或服务中监控cpu维测信息,可以参考hidumper的实现逻辑,但并不推荐这么做,避免出现安全漏洞。
更多推荐
所有评论(0)