概念:
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负载测试
此时占用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
再跑一个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的限制
查看当前使用内存
把该进程加入到tasks中去
[root@desktop-7f47 test]# echo 15141 > tasks
内存限制1G成功