Linux Cgroup 入门---CPU

前面一章,我们学习了cgroup的一些基础,这章我们开始学习在目前的系统中如何使用,在linux上,为了操作Cgroup,有一个专门的Cgroup文件系统,我们运行mount命令可以查看

在这里插入图片描述

cgroup 文件系统多挂载到 /sys/fs/cgroup 下,通过上面的命令行,我们可以看到我们可以用 cgroup 控制哪些资源。我们在 /sys/fs/cgroup/ 下面能看到下面的目录结构

在这里插入图片描述

我们可以想象,CPU 的资源控制的配置文件,应该在 cpu,cpuacct 这个文件夹下面。

在这里插入图片描述

我们看到了 cgroup 对于 Docker 资源的控制,在用户态是如何表现的,如下图所示

在这里插入图片描述

ubuntu 系统中(包括 Red Hat Enterprise Linux 7),通过将 cgroup 层级系统与 systemd 单位树捆绑,可以把资源管理设置从进程级别移至应用程序级别。默认情况下,systemd 会自动创建 slicescopeservice 单位的层级(具体的意思稍后再解释),来为 cgroup 树提供统一结构。可以通过 systemctl 命令创建自定义 slice 进一步修改此结构。

如果我们将系统的资源看成一块馅饼,那么所有资源默认会被划分为 3 个 cgroup:System, UserMachine。每一个 cgroup 都是一个 slice,每个 slice 都可以有自己的子 slice,如下图所示

img

下面我们以 CPU 资源为例,来解释一下上图中出现的一些关键词。

如上图所示,系统默认创建了 3 个顶级 sliceSystem, UserMachine),每个 slice 都会获得相同的 CPU 使用时间(仅在 CPU 繁忙时生效),如果 user.slice 想获得 100% 的 CPU 使用时间,而此时 CPU 比较空闲,那么 user.slice 就能够如愿以偿。这三种顶级 slice 的含义如下:

  • system.slice —— 所有系统 service 的默认位置
  • user.slice —— 所有用户会话的默认位置。每个用户会话都会在该 slice 下面创建一个子 slice,如果同一个用户多次登录该系统,仍然会使用相同的子 slice。
  • machine.slice —— 所有虚拟机和 Linux 容器的默认位置

控制 CPU 资源使用的其中一种方法是 shares。shares 用来设置 CPU 的相对值(你可以理解为权重),并且是针对所有的 CPU(内核),默认值是 1024。因此在上图中,httpd, sshd, crond 和 gdm 的 CPU sha

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值