如何限制进程内存:cgroup

发布时间 2023-03-30 18:20:28作者: philo_zhou

前两天刚知道cgroup,但是没用过,我就想做个简单的模拟OOM,网上搜了两天,发现一个比一个说的杂乱无章。

 

最后问的chatgpt:如何限制一个进程的内存

在Linux系统中,可以使用cgroups来限制一个进程的内存。cgroups是一种内核机制,用于控制进程组的资源使用(CPU、内存、IO、网络等)。

下面是使用cgroups限制一个进程的内存的步骤:

1.创建cgroups:
sudo mkdir /sys/fs/cgroup/memory/mygroup


2.设置cgroups的内存限制: sudo sh -c "echo 50M > /sys/fs/cgroup/memory/mygroup/memory.limit_in_bytes"

3.将进程加入到cgroups中: sudo echo <pid> > /sys/fs/cgroup/memory/mygroup/cgroup.procs 其中,<pid>是要限制内存的进程的进程号。 通过以上步骤,就可以限制一个进程的内存。当进程使用的内存超过限制时,系统会将其强制终止。同时,cgroups也可以用于限制其他资源的使用,比如CPU、IO、网络等。

三行配置解决,之后有问题还是多用chatgpt吧。

 

至于其他限制cpu利用率啥的,都可以问chatgpt,其实都大差不差,可以自己找一下这个目录下每个字段的单位就行了:

在Linux系统中,可以使用cgroups来限制一个进程的CPU使用率。cgroups是一种内核机制,用于控制进程组的资源使用(CPU、内存、IO、网络等)。

以下是使用cgroups限制一个进程的CPU使用率的步骤:

1.创建cgroups:

sudo mkdir /sys/fs/cgroup/cpu/mygroup
2.设置cgroups的CPU使用率限制(比如限制为50%):

sudo sh -c "echo 50000 > /sys/fs/cgroup/cpu/mygroup/cpu.cfs_quota_us"
sudo sh -c "echo 100000 > /sys/fs/cgroup/cpu/mygroup/cpu.cfs_period_us"
其中,cpu.cfs_quota_us表示CPU时间配额(单位为微秒),cpu.cfs_period_us表示CPU时间周期(单位为微秒),这里将CPU时间配额设置为50000微秒,CPU时间周期设置为100000微秒,表示CPU使用率限制为50%3.将进程加入到cgroups中:

sudo echo <pid> > /sys/fs/cgroup/cpu/mygroup/cgroup.procs
其中,<pid>是要限制CPU使用率的进程的进程号。

通过以上步骤,就可以限制一个进程的CPU使用率。当进程使用CPU时间超过配额时,系统会将其暂停一段时间,从而控制CPU使用率。同时,cgroups也可以用于限制其他资源的使用,比如内存、IO、网络等。