限制容器资源
1. 了解Cgroup
cgroups的全称是Linux Control Groups,主要作用是限制、记录和隔离进程组(process groups)使用的物理资源(cpu、memory、IO等)
Cgroup提供了一个原生接口并通过cgroupfs提供(cgroupfs就是Cgroup的一个借口封装)。类似于procfs和sysfs,是一种虚拟文件系统。并且cgroupfs是可以挂载的,默认情况下挂载在/sys/fs/cgroup目录。
Systemd也是对于Cgroup接口的一个封装。systemd以PID1的形式在系统启动的时候运行,并提供了一套系统管理守护程序、库和实用程序,用来控制、管理Linux计算机操作系统资源。通过systemd-cgls命令我们可以看到systemd工作的进程PID是1,而目录/sys/cgroup/systemd/是systemd维护的自己使用的非subsystem的cgroups层级结构。
2. 对容器内存的限制
运行一个容器,不限制的情况下压测
1 | nerdctl run -d --name=c1 --restart=always centos sleep 1d |
安装压测工具
1 | nerdctl cp memload-7.0-1.r29766.x86_64.rpm c1:/opt/ |
限制资源使用
限制内存使用512mb
1 | [root@control ~]# nerdctl run -d --name=c1 --restart=always -m 512m centos sleep 1d |
压测
1 | [root@ab3af419f53a /]# memload 1000 |
查看容器资源使用量
3. 对容器CPU亲和性
临时进入容器
1 | [root@control ~]# nerdctl run -it --name c1 --rm centos bash |
创建3个进程
1 | [root@06f9d93ae4da /]# cat /dev/zero > /dev/null & |
进程随机运行到cpu上
1 | [root@06f9d93ae4da /]# ps mo pid,comm,psr $(pgrep cat) |
限制容器只能运行在0号cpu
1 | [root@control ~]# nerdctl run -it --name c1 --rm --cpuset-cpus 0 centos bash |
评论
TwikooGiscus