linux cgroup 原理,深刻理解 Linux Cgroup 系列(二):玩转 CPU

上篇文章主要介绍了 cgroup 的一些基本概念,包括其在 CentOS 系统中的默认设置和控制工具,并以 CPU 为例阐述 cgroup 如何对资源进行控制。这篇文章将会经过具体的示例来演示如何经过 cgroup 来限制 CPU 的使用以及不一样的 cgroup 设置对性能的影响。linux

1. 查看当前 cgroup 信息

有两种方法来查看系统的当前 cgroup 信息。第一种方法是经过 systemd-cgls 命令来查看,它会返回系统的总体 cgroup 层级,cgroup 树的最高层由 slice 构成,以下所示:bash

$ systemd-cgls --no-page

├─1 /usr/lib/systemd/systemd --switched-root --system --deserialize 22

├─user.slice

│ ├─user-1000.slice

│ │ └─session-11.scope

│ │ ├─9507 sshd: tom [priv]

│ │ ├─9509 sshd: tom@pts/3

│ │ └─9510 -bash

│ └─user-0.slice

│ └─session-1.scope

│ ├─ 6239 sshd: root@pts/0

│ ├─ 6241 -zsh

│ └─11537 systemd-cgls --no-page

└─system.slice

├─rsyslog.service

│ └─5831 /usr/sbin/rsyslogd -n

├─sshd.service

│ └─5828 /usr/sbin/sshd -D

├─tuned.service

│ └─5827 /usr/bin/python2 -Es /usr/sbin/tuned -l -P

├─crond.service

│ └─5546 /usr/sbin/crond -n

复制代码

能够看到系统 cgroup 层级的最高层由 user.slice 和 system.slice 组成。由于系统中没有运行虚拟机和容器,因此没有 machine.slice,因此当 CPU 繁忙时,user.slice 和 system.slice 会各得到 50% 的 CPU 使用时间。session

user.slice 下面有两个子 slice:user-1000.slice 和 user-0.slice,每一个子 slice 都用 User ID (UID) 来命名,所以咱们很容易识别出哪一个 slice 属于哪一个用户。例如:从上面的输出信息中能够看出 user-1000.slice 属于用户 tom,user-0.slice 属于用户 root。ssh

systemd-cgls 命令提供的只是 cgroup 层级的静态信息快照,要想查看 cgroup 层级的动态信息,能够经过 systemd-cgtop 命令查看:工具

$ systemd-cgtop

Path Tasks %CPU Memory Input/s Output/s

/ 161 1.2 161.0M - -

/system.slice - 0.1 - - -

/system.slice/vmtoolsd.service 1 0.1 - - -

/system.slice/tuned.service 1 0.0 - - -

/system.slice/rsyslog.service 1 0.0 - - -

/system.slice/auditd.service 1 - - - -

/system.slice/chronyd.service 1 - - - -

你可能感兴趣的:(linux,cgroup,原理)