Show Table of Contents
第 3 章 使用 libcgroup 工具
libcgroup 数据包, 在 Red Hat Enterprise Linux 之前版本中是管理 cgroup 的主要工具,但现已过时。为避免冲突,请不要将 libcgroup 工具应用于默认资源管控器(列于 Red Hat Enterprise Linux 7 中可用的管控器),它们现在是 systemd 的专属域。这就让 libcgroup 工具的应用空间变得有限,只有当您需要管理目前不受 systemd 支持的控制器时,请再使用它,例如 net_prio。
以下章节将描述:与层级的默认系统没有冲突时,如何在相关情景中使用 libcgroup 工具。
注意
使用 libcgroup 工具前,请先确保 libcgroup 和 libcgroup-tools 数据包已安装在系统上。安装方法:请以
root 身份运行:
~]#yum install libcgroup~]#yum install libcgroup-tools
注意
net_prio 管控器没有像其它管控器一样被编译在 kernel 中,它是一个在挂载前必须被装载的模块。如要装载这一模块,请以 root 身份输入:
modprobenetprio_cgroup
3.1. 挂载层级
如需使用非自动挂载的 kernel 资源管控器,您需要创建一个包含这一管控器的层级。通过编写
/etc/cgconfig.conf 的 mount 部分来添加或者分离层级。这一方法可让管控器附载持续,也就是说系统重启后,您的设定也将被保留并运作。或者,您可以使用 mount 指令为当前会话创建临时挂载。
使用 cgconfig 服务
通过 libcgroup-tools 数据包安装的
cgconfig 服务可以让附加资源的管控器挂载层级。默认情况下,这一服务不会自动启动。当您启动 cgconfig 时,它会应用 /etc/cgconfig.conf 配置文件中的设置。因此,从会话到会话,配置会被重建,并且持续。请注意,如果您终止 cgconfig,那它之前挂载的层级都将被卸载。
通过 libcgroup 数据包安装的默认
/etc/cgconfig.conf 文件不包含任何配置设置,仅会有 systemd 自动挂载主要资源管控器的信息。
/etc/cgconfig.conf 可创建三种条目 —— mount、group 和 template。mount 条目用于创建层级并将层级挂载为虚拟文件系统,并且将管控器附加到这些层级中。Red Hat Enterprise Linux 7 中, 默认层级会被自动挂载到 /sys/fs/cgroup/ 目录,因此,cgconfig 被用来单独附载非默认的管控器。mount 条目通过以下句法定义:
mount {
controller_name = /sys/fs/cgroup/controller_name;
…
}
用您希望挂载到层级的 kernel 资源管控器名称来替换controller_name。示例请参见 例 3.1 “创建挂载条目”。
例 3.1. 创建挂载条目
如要将
net_prio 管控器附加到默认 cgroup 树中,请将下列字符添加到 /etc/cgconfig.conf 配置文件:
mount {
net_prio = /sys/fs/cgroup/net_prio;
}
然后重启
cgconfig 服务来应用这些设置:
systemctlrestartcgconfig.service
/etc/cgconfig.conf 中的组条目可以用来设定资源管控器的参数。更多组条目的信息,请参阅〈第 3.5 节 “设定 cgroup 参数”〉。
/etc/cgconfig.conf 中的样板条目可以用来创建组定义,这个组定义将应用于所有进程。
使用挂载指令
mount 指令可以用于临时挂载层级。如需这样做,请先在 /sys/fs/cgroup/ 目录中创建一个挂载点,systemd 将在此目录中挂载主要资源管控器。请以 root 身份输入:
mkdir/sys/fs/cgroup/name
请用新挂载目标的名称替代 name,通常是用管控器的名称。接下来,执行
mount 指令来挂载层级,同时附载一个或更多子系统。以 root 身份来输入:
mount-tcgroup-ocontroller_namenone/sys/fs/cgroup/controller_name
用管控器的名称取代 controller_name 来具体说明被挂载的设备和目标文件夹。
-t cgroup 参数可以明确挂载的类型。
例 3.2. 使用挂载指令来附加控制器
如要使用
mount 指令给 net_prio 管控器挂载层级,请先创建挂载节点:
~]#mkdir/sys/fs/cgroup/net_prio
然后将
net_prio 挂载到您之前创建的目标中。
~]#mount-tcgroup-onet_prionone/sys/fs/cgroup/net_prio
通过
lssubsys 指令(参见〈“将管控器列表”一节〉),将所有可用层级沿当前挂载节点列表,您就可以验证是否正确附加了层级:
~]# lssubsys -am
cpuset /sys/fs/cgroup/cpuset
cpu,cpuacct /sys/fs/cgroup/cpu,cpuacct
memory /sys/fs/cgroup/memory
devices /sys/fs/cgroup/devices
freezer /sys/fs/cgroup/freezer
net_cls /sys/fs/cgroup/net_cls
blkio /sys/fs/cgroup/blkio
perf_event /sys/fs/cgroup/perf_event
hugetlb /sys/fs/cgroup/hugetlb
net_prio /sys/fs/cgroup/net_prio
Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.