1. 功能概述
本 sample 实现限制进程 cpu 占用率和运行的 cpu 核功能,此处主要介绍该 sample 的实现与使用方法。
1.1. 软件架构说明
本 sample 基于 Linux 通用的 cgroup API,通过操作 cgroup 的 cpu 子系统和 cpuset 子系统配置文件,来限制 sample 进程的 cpu 占用率和运行的 cpu 核。
1.2. 代码位置与目录结构
本 sample 代码位置和目录结构如下:
代码位置如下:
{sdk_dir}/test/samples/platform_samples/source/S83_Sample/S83E03_BaseService/cgroup_sample目录结构如下:
├── Kconfig ├── Makefile ├── Makefile.in └── src ├── cgroup_sample.c └── Makefile1.3. API 流程说明
以下为 sample 内 API 调用流程图:
2. 编译
2.1. 编译环境
本 sample 的编译环境使用 SDK 中的 build 工具,请参考: Build 环境建立。
2.2. 编译说明
本 sample 的编译依赖封装 Linux cgroup API 链接库 libhbcgroup 提供的头文件:
#include "hb_cgroup.h"编译依赖的库为:
LIBS += -lhbcgroup编译命令:
进入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_sample3. 运行
3.1. 支持平台
征程 6X Matrix
3.2. 板端部署及配置
本 sample 的可执行文件位于板端如下路径:
/app/sample/S83_Sample/S83E03_BaseService/cgroup_sample/bin/cgroup_sample3.3. 运行指南
3.3.1.运行参数说明
下面的表格是 cgroup_sample 具体参数的说明:
如果-c 和-C 都不选择,则不会限制 cgroup_sample 进程的 cpu 占用率和运行的 cpu 核。
3.3.2.帮助菜单
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%:
/app/sample/S83_Sample/S83E03_BaseService/cgroup_sample/bin/cgroup_sample -c 20限制 cgroup_sample 进程只运行在 cpu 核 2:
/app/sample/S83_Sample/S83E03_BaseService/cgroup_sample/bin/cgroup_sample -C 2限制 cgroup_sample 进程运行在 cpu 核 1,4:
/app/sample/S83_Sample/S83E03_BaseService/cgroup_sample/bin/cgroup_sample -C 1,43.3.4.运行结果说明
运行本 sample 后,可通过 top 命令验证本 sample 进程的 cpu 占用率和运行的 cpu 核。
运行结果 1
root@hobot:~# /app/sample/S83_Sample/S83E03_BaseService/cgroup_sample/bin/cgroup_sample -c 20 -C 2 -t 20 &[1] 1514运行结果 2
root@hobot:~# /app/sample/S83_Sample/S83E03_BaseService/cgroup_sample/bin/cgroup_sample -c 20 -C 1,4 -t 20 &[1] 1522特别说明
查看 cpu 核,在执行 top 命令后,需进行如下操作:
- 按 f 键,弹出管理窗口;
- 按上下键选择下图指示的属性 P;
- 按空格键选中该属性(选中后会高亮);
- 按 q 键退出;
即可显示进程运行的 cpu 核。