征程 6 | cgroup sample

1. 功能概述

本 sample 实现限制进程 cpu 占用率和运行的 cpu 核功能,此处主要介绍该 sample 的实现与使用方法。

1.1. 软件架构说明

本 sample 基于 Linux 通用的 cgroup API,通过操作 cgroup 的 cpu 子系统和 cpuset 子系统配置文件,来限制 sample 进程的 cpu 占用率和运行的 cpu 核。

1.2. 代码位置与目录结构

本 sample 代码位置和目录结构如下:

代码位置如下:

markdown 复制代码
{sdk_dir}/test/samples/platform_samples/source/S83_Sample/S83E03_BaseService/cgroup_sample

目录结构如下:

markdown 复制代码
├── Kconfig
├── Makefile
├── Makefile.in
└── src
    ├── cgroup_sample.c
    └── Makefile

1.3. API 流程说明

以下为 sample 内 API 调用流程图:

2. 编译

2.1. 编译环境

本 sample 的编译环境使用 SDK 中的 build 工具,请参考: Build 环境建立

2.2. 编译说明

本 sample 的编译依赖封装 Linux cgroup API 链接库 libhbcgroup 提供的头文件:

markdown 复制代码
#include "hb_cgroup.h"

编译依赖的库为:

markdown 复制代码
LIBS += -lhbcgroup

编译命令:

markdown 复制代码
进入SDK所有目录{sdk_dir},并source构建环境(参见上文:编译环境)。# 编译本sample:
bdm cgroup_sample
# 输出路径:{sdk_dir}/out/debug-gcc_{gcc_version}/build/test/samples/platform_samples/source/S83_Sample/S83E03_BaseService/cgroup_sample

3. 运行

3.1. 支持平台

征程 6X Matrix

3.2. 板端部署及配置

本 sample 的可执行文件位于板端如下路径:

markdown 复制代码
/app/sample/S83_Sample/S83E03_BaseService/cgroup_sample/bin/cgroup_sample

3.3. 运行指南

3.3.1. 运行参数说明

下面的表格是 cgroup_sample 具体参数的说明:

如果-c 和-C 都不选择,则不会限制 cgroup_sample 进程的 cpu 占用率和运行的 cpu 核。

3.3.2. 帮助菜单

markdown 复制代码
Usage: cgroup_sample [OPTION]

-c  Limit cpu occupancy rate, 1 ~ 100.
-C  Limit cpu core.
-t  Delay time, 1's default.
-h  Show usage.

Without options, do nothing.

3.3.3. 运行方法

执行命令示例:

限制 cgroup_sample 进程的 cpu 占用率为 20%:

markdown 复制代码
/app/sample/S83_Sample/S83E03_BaseService/cgroup_sample/bin/cgroup_sample -c 20

限制 cgroup_sample 进程只运行在 cpu 核 2:

markdown 复制代码
/app/sample/S83_Sample/S83E03_BaseService/cgroup_sample/bin/cgroup_sample -C 2

限制 cgroup_sample 进程运行在 cpu 核 1,4:

markdown 复制代码
/app/sample/S83_Sample/S83E03_BaseService/cgroup_sample/bin/cgroup_sample -C 1,4

3.3.4. 运行结果说明

运行本 sample 后,可通过 top 命令验证本 sample 进程的 cpu 占用率和运行的 cpu 核。

运行结果 1

markdown 复制代码
root@hobot:~# /app/sample/S83_Sample/S83E03_BaseService/cgroup_sample/bin/cgroup_sample -c 20 -C 2 -t 20 &[1] 1514

运行结果 2

markdown 复制代码
root@hobot:~# /app/sample/S83_Sample/S83E03_BaseService/cgroup_sample/bin/cgroup_sample -c 20 -C 1,4 -t 20 &[1] 1522

特别说明

查看 cpu 核,在执行 top 命令后,需进行如下操作:

  1. 按 f 键,弹出管理窗口;
  2. 按上下键选择下图指示的属性 P;
  3. 按空格键选中该属性(选中后会高亮);
  4. 按 q 键退出;

即可显示进程运行的 cpu 核。

相关推荐
风筝在晴天搁浅3 分钟前
字节高频题 小于n的最大数
算法
LabVIEW开发5 分钟前
LabVIEW水力机组空蚀在线监测
算法·labview·labview知识·labview功能·labview程序
AI科技星10 分钟前
科幻艺术书本封面:《全域数学》第一部·数术本源 第三卷 代数原本(P95-141)完整五级目录【乖乖数学】
算法·机器学习·数学建模·数据挖掘·量子计算
风筝在晴天搁浅12 分钟前
LeetCode 92.反转链表Ⅱ
算法·leetcode·链表
王老师青少年编程26 分钟前
csp信奥赛C++高频考点专项训练之贪心算法 --【贪心与二分判定】:数列分段 Section II
c++·算法·贪心·csp·信奥赛·二分判定·数列分段 section ii
平原君208830 分钟前
SLAM 08.后端-非线性优化
机器人·自动驾驶
V搜xhliang02461 小时前
OpenClaw科研全场景用法:从文献到实验室的完整自动化方案
运维·开发语言·人工智能·python·算法·microsoft·自动化
HERR_QQ1 小时前
端到端课程自用 4 规划 基于自规划AR的端到端规划 AI 笔记
人工智能·笔记·自动驾驶·transformer
汉克老师1 小时前
GESP2025年3月认证C++五级( 第三部分编程题(2、原根判断))
c++·算法·模运算·gesp5级·gesp五级·原根·分解质因数
数据皮皮侠1 小时前
上市公司创新韧性数据(2000-2024)|顶刊同款 EIR 指数
大数据·人工智能·算法·智慧城市·制造