【Cgroup】Centos7上面的Cgroup简单实验
实验目标
- 控制CPU分配
- 控制CPU使用率
- 控制内存分配
安装配置工具
1 | [root@10 cpu] # yum install -y libcgroup-tools.x86_64 libcgroup |
创建我们的cgroup组my1
1 2 3 4 5 6 7 8 9 10 11 | #创建分组 [root@localhost ~] # cgcreate -g cpu,cpuset,memory:my1 #设置限制使用cpu 0 [root@localhost ~] # cgset -r cpuset.cpus=0 my1 #设置限制使用的内存条 [root@localhost ~] # cgset -r cpuset.cpus=0 my1 #设置限制cpu最多用到50% [root@localhost ~] # cgset -r cpu.cfs_period_us=100000 my1 [root@localhost ~] # cgset -r cpu.cfs_quota_us=50000 my1 #设置限制内存最大使用大小,这里单位是byte,这里限制最多用512M [root@localhost ~] # cgset -r memory.limit_in_bytes=524288000 my1 |
安装测试工具 matho-primes
1 2 3 4 5 | [root@localhost small] # wget -O mathomatic-16.0.1.tar.bz2 http://download.chinaunix.net/down.php?id=42725&ResourceID=6566&site=1 [root@localhost small] # yum install -y bzip2 [root@localhost small] # bzip2 -b mathomatic-16.0.1.tar.bz2 && tar -xf mathomatic-16.0.1.tar [root@localhost small] # cd mathomatic-16.0.1/primes/ [root@localhost small] # make && make install |
测试,可以看到下面的matho-primes 进程使用了第一个cpu,50%的资源
1 2 3 4 5 6 7 8 9 10 11 12 13 | [root@localhost ~] # cgexec -g cpuset,memory,cpu:/my1 /usr/local/bin/matho-primes 0 999999999 > /dev/null & [root@localhost ~] # top top - 13:40:49 up 1 day, 2:05, 2 users , load average: 0.00, 0.01, 0.10 Tasks: 180 total, 2 running, 178 sleeping, 0 stopped, 0 zombie %Cpu0 : 50.2 us, 0.0 sy, 0.0 ni, 49.8 id , 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu1 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id , 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu2 : 0.3 us, 0.0 sy, 0.0 ni, 99.7 id , 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu3 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id , 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 8010804 total, 2646744 free , 4564848 used, 799212 buff /cache KiB Swap: 1679356 total, 1679356 free , 0 used. 3059412 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 6965 root 20 0 9200 2524 488 R 49.8 0.0 0:05.44 matho-primes |
Cgroup子系统
- blkio -- 这个子系统为块设备设定输入/输出限制,比如物理设备(磁盘,固态硬盘,USB 等等)。
- cpu -- 这个子系统使用调度程序提供对 CPU 的 cgroup 任务访问。
- cpuacct -- 这个子系统自动生成 cgroup 中任务所使用的 CPU 报告。
- cpuset -- 这个子系统为 cgroup 中的任务分配独立 CPU(在多核系统)和内存节点。
- devices -- 这个子系统可允许或者拒绝 cgroup 中的任务访问设备。
- freezer -- 这个子系统挂起或者恢复 cgroup 中的任务。
- memory -- 这个子系统设定 cgroup 中任务使用的内存限制,并自动生成由那些任务使用的内存资源报告。
- net_cls -- 这个子系统使用等级识别符(classid)标记网络数据包,可允许 Linux 流量控制程序(tc)识别从具体 cgroup 中生成的数据包。
- ns -- 名称空间子系统。
喜爱多,范围广,主要看啥喜欢啥
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 为DeepSeek添加本地知识库
· 精选4款基于.NET开源、功能强大的通讯调试工具
· DeepSeek智能编程
· 大模型工具KTransformer的安装
· [计算机/硬件/GPU] 显卡