概念:

Linux Cgroups 的全称是 Linux Control Group。它最主要的作用,就是限制一个进程组能够使用的资源上限,包括 CPU、内存、磁盘、网络带宽等等。



查看 cgroup限制资源的种类

[root@desktop-7f47 cgroup]# mount -t cgroup

cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)

cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)

cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)

cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)

cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu)

cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_prio,net_cls)

cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)

cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)

cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)

cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)

cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)


查看cpu资源限制的具体类型

[root@desktop-7f47 cgroup]# ls /sys/fs/cgroup/cpu

cgroup.clone_children  cgroup.procs          cpuacct.stat   cpuacct.usage_percpu  cpu.cfs_quota_us  cpu.rt_runtime_us  cpu.stat           release_agent

cgroup.event_control   cgroup.sane_behavior  cpuacct.usage  cpu.cfs_period_us     cpu.rt_period_us  cpu.shares         notify_on_release  tasks



使用cgroup

在具体cgroup类型下创建一个控制组

/sys/fs/cgroup/cpu

mkdir test

在cpu下面创建了一个控制组test,默认会在test下生成cpu具体类型



节点上使用stress执行cpu负载测试

cgroup介绍及使用_linux

此时占用1个cpu


根据cpu的这2个指标可以限制cpu使用,此时-1是无限制

[root@desktop-7f47 test]# cat cpu.cfs_period_us

100000

[root@desktop-7f47 test]# cat cpu.cfs_quota_us

-1

修改为50ms

[root@desktop-7f47 test]# echo 50000 > cpu.cfs_quota_us

[root@desktop-7f47 test]# cat cpu.cfs_quota_us

50000


再吧pid 14789写入到tasks中去

[root@desktop-7f47 test]# echo 14789 > tasks


再次查看stress进程使用cpu

cgroup介绍及使用_进程组_02



再跑一个mem的测试 内存大概占用2g



memory目录下创建test

/sys/fs/cgroup/memory/test



[root@desktop-7f47 test]# cat memory.usage_in_bytes   ---------当前使用内存 

1968439296

[root@desktop-7f47 test]# echo 1G > memory.limit_in_bytes  -------设置1G的限制


查看当前使用内存

cgroup介绍及使用_desktop_03


把该进程加入到tasks中去

[root@desktop-7f47 test]# echo 15141 > tasks


内存限制1G成功

cgroup介绍及使用_linux_04