我的编程空间,编程开发者的网络收藏夹
学习永远不晚

技术分享 | 使用 systemd 修改资源隔离配置

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

技术分享 | 使用 systemd 修改资源隔离配置

技术分享 | 使用 systemd 修改资源隔离配置

作者:晏泽 爱可生售后团队成员,主要负责公司数据库运维产品问题诊断;努力在数据库和 IT 领域里摸爬滚打中。 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。


本文关键字:Linux、systemd、资源隔离

一,修改systemd unit file

为了给程序配置资源隔离,通常我们会到cgroup层级树下的控制器里,创建或者修改控制组文件。 在Linux7中,如果为程序配置了systemd服务,除了直接修改控制组文件之外,还可以通过systemd相关命令对程序的资源隔离配置进行修改。

1.1 修改方法

有两种方法可以对配置了systemd的程序进行资源隔离:

  1. 命令行修改:通过执行systemctl set-property命令实现,形式为systemctl set-property name parameter=value;修改默认即时生效

  2. 手工修改文件:直接编辑程序的systemd unit file文件,完成之后需手工执行systemctl daemon-reload更新配置,并重启服务systemctl restart name.service

systemd unit file里支持的资源隔离配置项,如常见的:

  • CPUQuota=value 该参数表示服务可以获取的最大CPU时间,value为百分数形式,高于100%表示可使用1核以上的CPU。与cgroup cpu控制器cpu.cfs_quota_us配置项对应。

  • MemoryLimit=value 该参数表示服务可以使用的最大内存量,value可以使用K, M, G, T等后缀表示值的大小。与cgroup memory控制器memory.limit_in_bytes 配置项对应。

    完整的配置项列表,请参考官方文档:2.3.2. Modifying Unit Files

1.2 试验说明

以MySQL CPU资源管理为例。

环境信息:

  • 系统版本:CentOS Linux release 7.5.1804 (Core)

  • CPU配置:4核CPU

当资源限制为1核CPU时(CPUQuota=100%):

修改CPU资源配置为:2核(CPUQuota=200%)

再次测试,可以看到数据库在写入数据的过程中,%CPU的值固定在200%左右。

二,简要原理说明

系统资源在cgroup里体现为资源控制器(resource controller/cgroup subsystem);每个controller以层级目录结构的方式对系统资源进行管理。systemd在系统开机时,默认自动将cpu、blkio、memory等控制器挂载到/sys/fs/cgroup路径下。

systemd使用以下三种类型的unit来进行资源管理:

  • service:A system service
  • slice:A group of hierarchically organized units that manage system process
  • scope:An externally created process

其中scope类型只能由程序自动创建;其他两种可程序自动创建,也可手动创建。系统在启动的时候将默认创建一系列运行时必要的service,同时也会创建四种必要的slice:

  • -.slice — the root slice;
  • system.slice — the default place for all system services;
  • user.slice — the default place for all user sessions;
  • machine.slice — the default place for all virtual machines and Linux containers.

基于此,在Linux 7中,系统通过绑定程序的systemd层级树路径和cgroup资源控制器路径实现资源隔离(可使用命令systemd-cgls直观查看,见下文图片),具体表现为:

  1. 将service unit、scope unit或者slice unit在systemd层级树里的路径,与对应的cgroup资源控制器路径进行匹配
  2. unit file里有对应资源管理配置参数,直接作用于cgroup对应的资源控制器

因此,通过修改程序的systemd unit file里与资源管理相关的参数,即可达到资源隔离配置的目的。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

技术分享 | 使用 systemd 修改资源隔离配置

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

技术分享 | 使用 systemd 修改资源隔离配置

作者:晏泽爱可生售后团队成员,主要负责公司数据库运维产品问题诊断;努力在数据库和 IT 领域里摸爬滚打中。本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。本文关键字:Linux、systemd、资源隔离一,修改s
技术分享 | 使用 systemd 修改资源隔离配置
2015-11-10

编程热搜

目录