赞助商

Cgroups 与 Systemd

发布时间:2019-02-09 发布网站:脚本之家
脚本之家收集整理的这篇文章主要介绍了Cgroups 与 Systemd脚本之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

》先了解 cgroups。当 Linux 的 init 系统发展到 systemd 之后,systemd 与 cgroups 发生了融合(或者说 systemd 提供了 cgroups 的使用和管理接口,systemd 管的东西越来越多啊!)。本文将简单的介绍 cgroups 与 systemd 的关系以及如何通过 systemd 来配置和使用 cgroups。

层级结构(A)和资源控制(B)。首先 cgroups 是以层级结构组织并标识进程的一种方式,同时它也是在该层级结构上执行资源限制的一种方式。我们简单的把 cgroups 的层级结构称为 A,把 cgrpups 的资源控制能力称为 B。

slice、scope 和 service unit 的层级(slice、scope 和 service 都是 systemd 的 unit 类型,参考《》),来为 cgroup 树提供统一的层级结构。

  • service: 一个或一组进程,由 systemd 依据 unit 配置文件启动。service 对指定进程进行封装,这样进程可以作为一个整体被启动或终止。
  • scope:一组外部创建的进程。由进程通过 fork() 函数启动和终止、之后被 systemd 在运行时注册的进程,scope 会将其封装。例如:用户会话、 容器和虚拟机被认为是 scope。
  • slice: 一组按层级排列的 unit。slice 并不包含进程,但会组建一个层级,并将 scope 和 service 都放置其中。真正的进程包含在 scope 或 service 中。在这一被划分层级的树中,每一个 slice 单位的名字对应通向层级中一个位置的路径。

  • -.slice:根 slice
  • system.slice:所有系统 service 的默认位置
  • user.slice:所有用户会话的默认位置
  • machine.slice:所有虚拟机和 Linux 容器的默认位置

systemd-run 命令创建临时的 cgroup,它可以创建并启动临时的 service 或 scope unit,并在此 unit 中运行程序。systemd-run 命令默认创建 service 类型的 unit,比如我们创建名称为 toptest 的 service 运行 top 命令:

<div class="cnblogs_code">

$  systemd-run --unit=toptest --slice=test top -b

<div class="cnblogs_code">

$ vim /proc//cgroup           #  为 top 进程的 PID

<div class="cnblogs_code">

$  systemctl set-property toptest.service CPUShares= MemoryLimit=500M

/sys/fs/cgroup/memory/test.slice 和 /sys/fs/cgroup/cpu/test.slice 目录,这两个目录下都多出了一个 toptest.service 目录。我们设置的 CPUShares=600 MemoryLimit=500M 被分别写入了这些目录下的对应文件中。

临时 cgroup 的特征是,所包含的进程一旦结束,临时 cgroup 就会被自动释放。比如我们 kill 掉 top 进程,然后再查看 /sys/fs/cgroup/memory/test.slice 和 /sys/fs/cgroup/cpu/test.slice 目录,刚才的 toptest.service 目录已经不见了。

<div class="cnblogs_code">

$  vim  /lib/systemd/system/cron.service

<div class="cnblogs_code">

$  systemctl daemon- systemctl restart cron.service

<div class="cnblogs_code">

$  systemctl set-property cron.service CPUShares=

总结

以上是脚本之家为你收集整理的Cgroups 与 Systemd全部内容,希望文章能够帮你解决Cgroups 与 Systemd所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:76874919,请注明来意。
标签:
猜你在找的sysTemd相关文章
其他相关热搜词更多
gitSVNgithubsvn教程tortoisegisvn类内置svn函数svn版本HBuildergit自动部署调用SVN命令ctype_digigiteempvue开发gmpvue开发ggithub预览Node.js搭建git安装docsifytagit
全站导航更多
最新sysTemd教程
热门sysTemd教程