cgroup内存限制和cpu限制的方法

小熊 Linux评论20,415字数 1093阅读3分38秒阅读模式

我发现有一个服务,cpu只跑了一半,我怀疑没有跑满,除了服务本身的cpulimit配置项,怀疑是cgroup的问题。所以有了这一篇文章。

按需自取 计算机必看经典书单和课程资源(含下载方式)

是什么

cgroups是一种内核机制,用于控制进程组的资源使用(CPU、内存、IO、网络等)。

限制内存

Linux系统中,可以使用cgroups来限制一个进程的内存。

下面是使用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>是要限制内存的进程的进程号。

通过以上步骤,就可以限制一个进程的内存。当进程使用的内存超过限制时,系统会将其强制终止

限制cpu

Linux系统中,可以使用cgroups来限制一个进程的CPU使用率。

以下是使用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使用率。

表现就是略卡顿。

最后

我们用惯了k8s,其实很多服务比如有状态的,不上k8s更安全,cgroup限制了解一下很有必要。

weinxin
公众号
扫码订阅最新深度技术文,回复【资源】获取技术大礼包
小熊