使用 cgroups 限制指定进程的内存使用

标签: Linux | 发表时间:2019-03-02 23:51 | 作者:依云
出处:https://blog.lilydjwg.me/

本文来自 依云's Blog,转载请注明。

最近我的系统有这么个问题:在备份或者系统更新等高 I/O 负载的时候,系统整体性能下降严重,界面经常卡到动不了。经过分析发现此时比平常多了许多磁盘读操作。平常的时候磁盘读操作是很少的,会有大量的缓存命中,反倒是写操作一直都有(因为我本地搭了个 监控系统)。啊对,分析用到的磁盘性能数据就是来自于这个监控系统。

所以原因很清楚了:备份和系统更新不仅造成了大量缓存未命中,还占用了本来存放着热数据的缓存,导致常规使用的缓存命中率也急速下降,结果我的机械硬盘就忙不过来了。

那么,要是能够限制这些操作占用的缓存,性能不就能好一点吗?那些新读进来的数据反正是短期内再也用不到了,缓存起来也只是浪费有限的内存空间啊。

研究了一下 /sys/fs/cgroup/memory/memory.stat,看起来 cgroups 内存限制是包含缓存部分的,于是就试试呗。正好 systemd 直接就能设置了:

$ sudo systemd-run -p MemoryMax=512M --scope pacman -Syu

本来我是设置的 256M 限制,结果发现 dkms 编译内核模块的时候超级慢,还用掉了不少 swap……于是分了 512M。效果还是不错的,常规操作偶尔还是卡一卡(毕竟还是有一些 I/O 操作),但比起不限制的时候要少很多。

要注意一点的是,不使用 cgroups v2 的话(Arch Linux 默认),这个命令不能加 --user 以在用户级的 systemd 下跑的。而使用 cgroups v2 的话,lxc 和 docker 都跑不了……

备份也是类似的,而且因为 rsync 自己用不到多少内存,这个效果更好:

$ systemd-run -p MemoryMax=256M --scope ./backup-my-system

终于又一次在半小时内完成了备份 QAQ 之前动不动就一两小时的。

我也不知道为什么这个问题近期才出现,总之现在是缓解了。(接下来有空继续计划换 SSD 硬盘的事情~

相关 [cgroups 限制 进程] 推荐:

使用 cgroups 限制指定进程的内存使用

- - 依云's Blog
本文来自 依云's Blog,转载请注明. 最近我的系统有这么个问题:在备份或者系统更新等高 I/O 负载的时候,系统整体性能下降严重,界面经常卡到动不了. 经过分析发现此时比平常多了许多磁盘读操作. 平常的时候磁盘读操作是很少的,会有大量的缓存命中,反倒是写操作一直都有(因为我本地搭了个 监控系统).

使用cgroups限制MongoDB的内存使用

- - 鸟窝
cgroups,其名称源自控制组群(control groups)的简写,是Linux内核的一个功能,用来限制,控制与分离一个进程组群的资源(如CPU、内存、磁盘输入输出等). 这个项目最早是由Google的工程师在2006年发起(主要是Paul Menage和Rohit Seth),最早的名称为进程容器(process containers).

Cgroups在云计算中的应用

- - 博客园_知识库
  云计算是目前计算机业界热门的方向,Cgroups作为一种有效的资源管理方案在云计算中得到越来越大的应用. 下面简要介绍一下Cgroups在云计算中一些应用,欢迎补充.   首先,我们看一下Cgroups的娘家Google(Cgroups最早是Google工程师提出的). 在推出PaaS产品GAE几年后,Google终于推出了自己的IaaS的产品Google Compute Engine,跟Amazon进行全面的竞争.

解除 Linux 系统的最大进程数和最大文件打开数限制

- - 操作系统 - ITeye博客
ulimit用于shell启动进程所占用的资源. -H 设置硬件资源限制.. -S 设置软件资源限制.. -a 显示当前所有的资源限制.. -c size:设置core文件的最大值.单位:blocks. -d size:设置数据段的最大值.单位:kbytes. -f size:设置创建文件的最大值.单位:blocks.

限制与自由

- zx - 左岸读书_blog
无需仔细观察,就会发现,你我的周围充斥这样的声音:. “我之所以没成功,是因为我的出生的时代不好,经过30年的改革开放,到了现在这个阶段,机会都饱和了. 我之所以没成功,是因为我的家庭比较普通,如果我生在比尔盖茨或者巴菲特的家里,我绝对会成功. 我之所以没成功,是因为我的父母把我生得不漂亮或者不帅,不然我有机会成为章子怡、王力宏之类的.

textarea限制字数

- - JavaScript - Web前端 - ITeye博客
textarea称文本域,又称文本区,即有滚动条的多行文本输入控件,在网页的提交表单中经常用到. 与单行文本框text控件不同,它不能通过maxlength属性来限制字数,为此必须寻求其他方法来加以限制以达到预设的需求. 通常的做法就是使用#脚本语言来实现对textarea文本域的字数输入限制,简单而实用.

appcache的浏览器限制

- - 前端观察
appcache(之前的manifest)是html5的一个特性,用来实现浏览器端的资源缓存,是webapp的一个重要工具. 虽然大部分浏览器的最新版都它提供了支持,但是各浏览器的实现却有些差异,我们来看一下~~. 数据来源: browserscope. 可以看出,桌面端的浏览器除了IE10都没有限制,移动端的基本都有各种限制.

SSH的登录限制

- - 操作系统 - ITeye博客
从网络来的数据包首先要经过iptables,所以可以在iptables上面加上规则来限制ip的访问. 比如只限制3个外网,1个内网IP连接. 直接在/etc/hosts.deny里面加一行. sshd: ALL EXCEPT xxx.xxx.xxx.xxx(允许的ip或网段). sshd: ALL EXCEPT xxx.xxx.xxx.xxx/255.255.255.0(允许的网段) 就可以了.

IE CSS文件限制

- - Web前端 - ITeye博客
单个页面最多31个css文件. 每个css文件大小最大288k. 每个css文件最多4095个选择器. Resource merging, which help you reduce the number of requests made to the server, may bring the following dilemma in IE.