首页 > 系统相关 >如何限制进程内存:cgroup

如何限制进程内存:cgroup

时间:2023-03-30 18:24:06浏览次数:37  
标签:限制 内存 cgroup 进程 cgroups CPU

前两天刚知道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、网络等。

 

标签:限制,内存,cgroup,进程,cgroups,CPU
From: https://www.cnblogs.com/philo-zhou/p/17273927.html

相关文章

  • C# 当前进程是否有控制台窗口
    WPF应用程序,在VS的项目属性中,可以设置输出类型:那我们在代码中,如何判断应用的类型呢。有没有控制台?是否Windows应用程序还是控制台应用程序?Kernel32下函数GetConsoleWindow可以解决这个问题:[DllImport("kernel32.dll")]privatestaticexternIntPtrGetConsoleWindow();......
  • Linux 进程管理 | ps、top、kill
    ps可显示系统进程状况top可动态显示进程状况kill用来结束进程ps(ProcessStatus)ps命令用来列出系统中当前运行的进程,就是执行ps命令时的进程执行ps-auxwwf结......
  • 内存容量,末地址,首地址运算方法
    内存容量=末地址-首地址+1B13FF-A1000+1=10400换算下:10400=4*(16^2)+1*(16^4)=2^10+2^16=2^10*(1+2^6)=2^10*65内存是按字节编址的。记住几个常用的2的10次方为1024即1KB故答......
  • 【性能优化】Linux内存调试工具-pmap
    简介pmap是一款对进程内存占用率进行分析的Linux环境调试工具,他提供了进程的内存映射,可以用于显示一个或多个进程的内存状态。pmap工具使用说明Usage:pmap[options]P......
  • 内存模型
    JMM(JavaMemoryModel,Java内存模型)JMM是一个抽象概念,由于CPU多核多级缓存、为了优化代码会发生指令重排的原因,JMM为了屏蔽细节,定义了一套规范,保证最终的并发安全。......
  • 进程优先级及环境变量
    Linux进程优先级,环境变量入门小站 入门小站 2023-03-2422:35 发表于湖北收录于合集#Linux739个入门小站分享运维技巧及10k+Stars的开源项目227篇原......
  • Linux下的GDB多进程调试
    使用GDB调试的时候,GDB默认只能跟踪一个进程,可以在fork函数调用之前,通过指令设置GDB调试工具跟踪父进程或者子进程,默认跟踪父进程。设置调试父进程或子进程:setfollow=fork......
  • 开源内存数据库 DragonflyDB 1.0 正式 GA,可替代 Redis
    DragonflyDB是一个现代化的开源内存数据库,兼容Redis和MemcachedAPI,迁移时无需修改任何代码,可作为两者的替代方案。与传统的内存数据存储相比,DragonflyDB提供了更......
  • Centos查找、删除僵尸进程
    CentOS1、查找僵尸进程命令:ps-A-ostat,ppid,pid,cmd|grep-e'^[Zz]'  说明:因为状态为z或者Z的进程为僵尸进程,所以我们使用grep抓取stat状态为zZ进程2、批......
  • 容器核心技术Cgroups和Namespace
    |什么是Cgroups简单一句话描述Cgroups:Cgroups是Linux内核提供的一种可以限制单个进程或者多个进程所使用资源的机制,可以对cpu,内存等资源实现精细化的控制。Cgroups全称是......