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

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

技术分享 | 使用 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)

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

  • CPU配置:4核CPU

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

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

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

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

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

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

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

二,简要原理说明

系统资源在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里与资源管理相关的参数,即可达到资源隔离配置的目的。

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/7175.html

(0)
上一篇 2023-03-25 17:00
下一篇 2023-03-25

相关推荐

  • Python和andor:简介及应用场景

    Python和andor:简介及应用场景Python是一门高级编程语言,它是一门解释型的、面向对象的、动态数据类型的语言。

    2024-06-05
    53
  • MySQL默认隔离级别为什么是RR

    MySQL默认隔离级别为什么是RR曾多次听到“MySQL为什么选择RR为默认隔离级别”的问题,其实这是个历史遗留问题,当前以及解决,但是MySQL的各个版本沿用了原有习惯。历史版本中的问题是什么,本次就通过简单的测试来说明一下。 1、

    2023-02-14
    142
  • SQL 基础整理[亲测有效]

    SQL 基础整理[亲测有效]SQL语句执行顺序 From 表连接 on连接条件,形成新的虚拟表 where 筛选条件 group by 生成新的结果集合 group by 分组列表 having 分组后筛选 select 选出显

    2023-03-28
    163
  • oracle添加约束[亲测有效]

    oracle添加约束[亲测有效] //建测试表 create table dept( 部门表 deptno number(3) primary key, dname varchar2(10), loc varchar2(13…

    2023-03-27
    163
  • 使用Python输出网页标题

    使用Python输出网页标题Python是一种非常流行的编程语言,具有简单易学、语法简洁、可读性强、灵活性高等优点,所以越来越受到程序员和爱好者的欢迎。其中,使用Python输出网页标题是许多人都热衷于学习的标志性功能之一。

    2024-05-14
    68
  • 利用Python的concat函数进行字符串拼接

    利用Python的concat函数进行字符串拼接字符串拼接是编程中常见的操作,在从不同数据库中查询数据时经常遇到需要将多个字符串拼接在一起的情况。Python提供了一些内置的函数用于完成字符串拼接操作,其中包括concat函数。在本文中,我们将介绍Python的concat函数,并给出代码示例,以便读者可以更好地掌握其使用方法。

    2024-08-24
    29
  • Hbase Shell「终于解决」

    Hbase Shell「终于解决」Hbase Shell 1.创建表 语法:create <table>, {NAME => <family>, VERSIONS => <VERSIONS&g

    2023-04-24
    162
  • 加速Python代码的几个技巧

    加速Python代码的几个技巧Python是一门灵活且易于学习的编程语言,但某些情况下,Python代码可能会运行缓慢。为了克服这个问题,本文将介绍几个加速Python代码的技巧,包括使用列表推导式、使用生成器、使用装饰器等。

    2023-12-23
    112

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注