技术分享 | 使用 systemd 修改资源隔离配置
作者:晏泽爱可生售后团队成员 , 主要负责公司数据库运维产品问题诊断;努力在数据库和IT领域里摸爬滚打中 。 本文来源:原创投稿*爱可生开源社区出品 , 原创内容未经授权不得随意使用 , 转载请联系小编并注明来源 。
本文关键字:Linux、systemd、资源隔离
一 , 修改systemdunitfile为了给程序配置资源隔离 , 通常我们会到cgroup层级树下的控制器里 , 创建或者修改控制组文件 。 在Linux7中 , 如果为程序配置了systemd服务 , 除了直接修改控制组文件之外 , 还可以通过systemd相关命令对程序的资源隔离配置进行修改 。
1.1修改方法有两种方法可以对配置了systemd的程序进行资源隔离:
命令行修改:通过执行systemctlset-property命令实现 , 形式为systemctlset-propertynameparameter=value;修改默认即时生效手工修改文件:直接编辑程序的systemdunitfile文件 , 完成之后需手工执行systemctldaemon-reload更新配置 , 并重启服务systemctlrestartname.servicesystemdunitfile里支持的资源隔离配置项 , 如常见的:
CPUQuota=value该参数表示服务可以获取的最大CPU时间 , value为百分数形式 , 高于100%表示可使用1核以上的CPU 。 与cgroupcpu控制器cpu.cfs_quota_us配置项对应 。 MemoryLimit=value该参数表示服务可以使用的最大内存量 , value可以使用K,M,G,T等后缀表示值的大小 。 与cgroupmemory控制器memory.limit_in_bytes配置项对应 。 完整的配置项列表 , 请参考官方文档:2.3.2.ModifyingUnitFiles1.2试验说明以MySQLCPU资源管理为例 。
环境信息:
系统版本:CentOSLinuxrelease7.5.1804(Core)CPU配置:4核CPU
service:Asystemserviceslice:Agroupofhierarchicallyorganizedunitsthatmanagesystemprocessscope:Anexternallycreatedprocess其中scope类型只能由程序自动创建;其他两种可程序自动创建 , 也可手动创建 。 系统在启动的时候将默认创建一系列运行时必要的service , 同时也会创建四种必要的slice:
-.slice—therootslice;system.slice—thedefaultplaceforallsystemservices;user.slice—thedefaultplaceforallusersessions;machine.slice—thedefaultplaceforallvirtualmachinesandLinuxcontainers.基于此 , 在Linux7中 , 系统通过绑定程序的systemd层级树路径和cgroup资源控制器路径实现资源隔离(可使用命令systemd-cgls直观查看 , 见下文图片) , 具体表现为:
将serviceunit、scopeunit或者sliceunit在systemd层级树里的路径 , 与对应的cgroup资源控制器路径进行匹配unitfile里有对应资源管理配置参数 , 直接作用于cgroup对应的资源控制器因此 , 通过修改程序的systemdunitfile里与资源管理相关的参数 , 即可达到资源隔离配置的目的 。
推荐阅读
- 科学探索|新技术能快速将海水变成饮用水
- 新个体经济为啥这么"火" 分享也是一项"严肃创业"
- 林郑月娥首度承认使用信用卡受限|被美国列入制裁名单,林郑月娥首度承认使用信用卡受限,有不便但感光荣
- 美将38家华为子公司列入实体清单|美将38家华为子公司列入实体清单,限制它们获得某些“敏感技术”
- 现代迎来技术“爆发”解读第十代索纳塔动力系统
- 新华网|白俄罗斯总统卢卡申科说愿根据宪法程序分享总统权力
- 栽培技术|发展林下树下黑木耳栽培技术,促进林业生产发展,增加经济收入
- spring框架之注解的使用
- 隐身能力太差,俄军仍采购76架苏57战机,新技术加持或超越F35
- 手机卡|“欠费”后的实名手机卡,没使用也不去注销,结果会怎样?
