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

本文详细介绍了如何通过 Linux Cgroup 对 CPU 使用进行限制和管理。文章通过实例展示了如何查看和调整 cgroup 的 CPU shares 和 CPUQuota,以及它们对系统性能的影响。在多核 CPU 环境中,Cgroup 的设置方式有所不同,可以用来精确控制服务和用户进程的 CPU 资源使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上篇文章主要介绍了 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值