| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> 关于cgroup 学习 -> 正文阅读 |
|
[系统运维]关于cgroup 学习 |
一、前言公司一个项目用linux 的 cgroup 技术来限制进场cpu和内存使用,具有非常好的学习意义,所以业余写下笔记,来记录一下cgroup的使用 cgroup 可以绑定一组进程集合,他的内核接口暴露是通过linux伪文件系统来实现的,我们可以通过linux 上一些特定的文件来限制进场cpu和内存的使用 二、cgroup学习介绍地址: https://man7.org/linux/man-pages/man7/cgroups.7.html cgroup 现在有两个版本 v1 和 v2 每个cgroup 都有自己的一组文件,通过读取写入来限制cpu和内存 挂载v1控制器 使用cgroup必须在编译内核的时候使用CONFIG_CGROUP选项 为了使用v1控制器,你必须挂载一个cgroup的文件系统,他一般挂载到 /sys/fs/cgroup下面,例如挂载一个cpu控制器:
挂载多个cgroup控制器到相同的层级:
卸载cgroup
卸载cgroup的时候我们要首先确保他没有子cgroup才可以卸载。 每个cgroup控制器都有一个配置项管理 cpu: 他可以在限制进程使用cpu额度的下限和上限 cpuacct 按组计算cpu使用情况 cpuset 绑定cgroup中的进程到一组cpu上 memory 控制进程使用内存的上限和下限 devices 控制哪些进程可以创建设备驱动 mknod freezer 可以暂停和恢复所有cgroup的系统 net_cls 可以将cgroup的classid放到网络包上 blkio 限制块设备以io形式对存储节点的访问,有两种限制策略,基于权重时间和io速率 perf_event 允许对cgroup的进程使用perf net_prio 允许指定cgroup网络接口的优先级 hugetlb 限制cgroup大页的使用 pids 限制cgroup中进程数量 rdma 允许RDMA控制器使用RDMA/IB-有限制的使用每个cgroup特定的资源。 环境介绍 我们找cat /proc/mounts,发现没有cgroup
发现我的电脑上是v2版本,v1版本是:
v2版本:
我们发现v2版本的mount option只有
三、使用c++简单完成一个cgroupv2版本的使用调用:
挂载cgroup2实现
我们发现/home/zhanglei/cgroup/red下面多了一些文件
四、使用cgroup 限制cpu案例我们使用php写一个demo
运行后他是可以占用一个核的cpu,也就是最大到100% 现在我们使用cgroups 来限制他,将进程 test.php pid写入cg1的目录下
限制test.php 的cpu
发现test.php 只用了20 这意味着1秒内 php 最多执行200毫秒我们看下效果
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 9:37:52- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |