Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
2.5. 建立控制群組
使用
cgcreate
指令來建立控制群組。cgcreate
的語法為:cgcreate -t
uid:gid -a
uid:gid -g subsystems:path
,其中:
-t
(選用)— 指定使用者(透過使用者 ID,也就是 uid)以及群組(透過群組 ID,亦即 gid)來擁有tasks
偽檔案,給此控制群組使用。該使用者可新增工作至控制群組。注意
請注意,由控制群組移除工作的唯一方法就是將它移至不同的控制群組。若要移動一項工作,使用者必須擁有 destination 控制群組的寫入權限;來源控制群組的寫入權限並不重要。-a
(選用):讓使用者(透過使用者 ID,也就是 uid)以及群組(透過群組 ID,亦即 gid)來擁有所有偽檔案,而不是讓此控制群組的tasks
擁有。這使用者可以修改擁有系統資源的控制群組之任務。-g
— 指定控制群組應建立於哪個階層中,作為以逗號區隔開、與這些階層相聯的子系統。若此清單中的子系統位於不同的階層中,那麼群組便會建立於各個這些階層中。階層之後會包含一個冒號,以及與階層相關之子群組的路徑。請勿在路徑中包含階層的掛載點。比方說,位於/cgroup/cpu_and_mem/lab1/
目錄的控制群組會稱為lab1
— 它的路徑已獨特地指定了,因為一個子系統最多只能屬於一個階層。此外,請注意群組是由控制群組所建立於的所有階層中的子系統所控制的,儘管這些子系統未指定於cgcreate
指令中 — 請參閱 範例 2.5, “cgcreate 使用方法”。
因為相同階層中的所有控制群組皆擁有相同的控制器,因此子群組會擁有與其父群組相同的控制器。
範例 2.5. cgcreate 使用方法
考量一部系統,其
cpu
和 memory
子系統一起掛載於 cpu_and_mem
階層中,並且 net_cls
控制器已掛載於一個獨立、名為 net
的階層中。我們現在將執行:
~]# cgcreate -g cpu,net_cls:/test-subgroup
cgcreate
指令會建立兩個群組,名為 test-subgroup
,一個位於cpu_and_mem
階層中,而另一個則位於 net
階層中。cpu_and_mem
階層中的 test-subgroup
群組是由 memory
子系統所控制的,儘管我們並未在 cgcreate
指令中指定它。
額外方式
若要直接建立控制群組的子群組,請使用
mkdir
指令:
~]# mkdir /cgroup/hierarchy/name/child_name
例如:
~]# mkdir /cgroup/cpuset/lab1/group1