Show Table of Contents
章 2. 使用控制群組
控制群組最容易的使用方法就是安裝 libcgroup 套件,此套件包含了數個與 cgroup 相聯的指令列工具程式,以及其相聯的 man page。您可「掛載」階層,並使用任何系統上的 shell 指令和工具程式,設置 cgroup 參數(非一致性)。然而,使用 libcgroup 所提供的工具程式可簡化程序與延伸功能。因此,本指南內容專注於 libcgroup 指令。在大部分情況下,我們皆包含了相等的 shell 指令,以協助描述基礎機制。然而,我們建議您使用 libcgroup 指令。
注意
若要使用 cgroups,首先請以 root 身份,透過下列指令確認 libcgroup 套件已安裝在您的系統上:
~]# yum install libcgroup2.1. cgconfig 服務
透過 libcgroup 套件安裝的
cgconfig 服務,提供了方便地建立階層、將子系統連接至階層,並在這些階層中管理 cgroup 的方式。我們建議您使用 cgconfig 來管理您系統上的階層和 cgroup。
就預設值,在 Red Hat Enterprise Linux 6 上,
cgconfig 服務不會被啟用。當您透過 chkconfig 啟用該項服務時,它會讀取控制群組配置檔案 /etc/cgconfig.conf。如此一來,控制群組會在 session 執行時重新建立,並持續運行。根據配置檔案的內容,cgconfig 會建立階層、掛載所需的檔案系統、建立控制群組、並為每個群組設定子系統。
與 libcgroup 套件一起安裝的預設
/etc/cgconfig.conf 檔案,會為各系統建立與掛載個別的階層,並將子系統連接至這些階層。
若您停用了
cgconfig 服務(透過 service cgconfig stop),它會將它所掛載的所有階層卸載。
2.1.1. cgconfig.conf 檔案
/etc/cgconfig.conf 檔案包含了兩種主要的條目:mount 與 group。掛載條目會建立、掛載階層,使之成為虛擬檔案系統;並把子系統連結到這些階層上。舉例來說:
mount {
<controller> = <path>;
…
}
範例用法請見〈範例 2.1, “建立掛載點”〉。
範例 2.1. 建立掛載點
以下範例會為
cpuset 子系統建立一組階層:
mount {
cpuset = /cgroup/cpu;
}
這命令列相當於:
~]#mkdir /cgroup/cpu~]#mount -t cgroup -o cpu cpu /cgroup/cpu
群組條目會建立控制群組,並設定子系統參數。群組條目會透過以下語法定義:
group <name> {
[<permissions>]
<controller> {
<param name> = <param value>;
…
}
…
}
請注意,
permissions 一節是選用的。要定義群組條目的允許權限,請使用以下語法:
perm {
task {
uid = <task user>;
gid = <task group>;
}
admin {
uid = <admin name>;
gid = <admin group>;
}
}
範利用法請參見〈範例 2.2, “建立群組條目”〉:
範例 2.2. 建立群組條目
以下範例會為 sql daemon 建立控制群組,賦予
sqladmin 群組的使用者把任務加入控制群組的權限,並賦予 root 使用者修改子系統參數的權限。
group daemons/sql {
perm {
task {
uid = root;
gid = sqladmin;
} admin {
uid = root;
gid = root;
}
} cpu {
cpu.shares = 100;
}
}
跟〈範例 2.1, “建立掛載點”〉裡的掛載點範例結合之後,相當於以下指令:
~]#mkdir -p /cgroup/cpu/daemons/sql~]#chown root:root /cgroup/cpu/daemons/sql/*~]#chown root:sqladmin /cgroup/cpu/daemons/sql/tasks~]#echo 100 > /cgroup/cpu/daemons/sql/cpu.shares
注意
要讓
/etc/cgconfig.conf 裡的改變生效,請重新啟動 cgconfig 服務:
~]# service cgconfig restart
當您安裝 cgroups 時,配置範例會寫入
/etc/cgconfig.conf。以 # 符號開始的每一行表示註解,cgconfig 服務不會處理。

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.