news 2026/2/15 4:07:16

征程 6 | cgroup sample

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
征程 6 | cgroup sample

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 └── Makefile

1.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_sample

3. 运行

3.1. 支持平台

征程 6X Matrix

3.2. 板端部署及配置

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

/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.帮助菜单
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,4
3.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 命令后,需进行如下操作:

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/14 18:00:55

四川西昌电器门店:30年本地老店,5大优势让你买电器不踩坑!

【四川西昌京东家电】哪家好:专业深度测评开篇:定下基调随着西昌市民对家电品质与服务需求的提升,选择一家靠谱的家电门店成为关键。本次测评聚焦四川西昌家电市场,旨在通过客观数据与真实体验,为消费者提供权威选购参…

作者头像 李华
网站建设 2026/2/6 23:55:28

python 学习笔记(文件和目录操作)

创建目录 os.makedirs可以递归的创建目录结构。 import os os.makedirs(tmp/python/test,exist_okTrue) #exit_ok True指定了,如果某个要创建的目录已经存在,也不报错删除文件或目录 os.remove 可以删除一个文件 os.remove(test.py)**shutil.rmtree()**…

作者头像 李华
网站建设 2026/2/12 23:53:44

实验一 安全威胁与攻击实验

一、实验目的安全威胁与攻击实验与理论教学第一章信息安全概论相对应。本实验在学生完成MAC地址欺骗攻击与防御实验、OSPF路由项欺骗攻击和防御实验的基础上,使学生能够理解威胁、攻击、资产的关系,并理解基本安全设计原则的重要性。具体如下&#xff1a…

作者头像 李华
网站建设 2026/2/14 6:10:13

二十一、pinctrl子系统

前言 前面我们写的GPIO驱动程序都是自己在驱动里面定义好gpio引脚需要用到的寄存器,然后在驱动程序里面直接去配置这些寄存器。Linux是一个成熟的,跨平台的通用操作系统,对于配置引脚这样的最基本的功能,是已经有一套现成的框架可…

作者头像 李华
网站建设 2026/2/12 19:26:45

Java Web 社区医院信息平台系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】

摘要 随着信息技术的快速发展,传统社区医院的管理模式已难以满足现代医疗服务的需求。社区医院在日常运营中涉及患者信息管理、医生排班、药品库存、预约挂号等多方面业务,传统的手工记录或单机系统存在效率低下、数据易丢失、信息共享困难等问题。为了提…

作者头像 李华
网站建设 2026/2/13 16:36:43

基于SpringBoot+Vue的IT交流和分享平台管理系统设计与实现【Java+MySQL+MyBatis完整源码】

摘要 随着互联网技术的快速发展,IT技术交流与知识分享的需求日益增长。传统的技术论坛和社交媒体平台虽然提供了基础的交流功能,但在专业性、系统性和用户体验方面仍有较大提升空间。尤其是在技术问答、资源共享和项目管理等方面,缺乏高效的整…

作者头像 李华