Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
1.2. 子系統、階層、控制群組與工作之間的關係
任何單獨子系統(例如 cpu
)最多皆可連接至一個階層。
cpu
子系統無法連至兩個不同的階層。
一個階層能夠連接一個或更多個子系統。
cpu
和 memory
子系統(或任何數量的子系統)能連接至一個單獨的階層,不過它們不可連至任何其它階層。
每當系統上建立了新的階層,系統上的所有工作一開始都會是該階層的預設控制群組的成員,該控制群組亦稱為 root cgroup。當您建立了任何一個階層時,系統上的各項工作,都只能是該階層中一個 cgroup 的成員。一項單獨的工作能包含在多個控制群組中,只要這些控制群組皆位於不同的階層中。當工作成為相同階層中,第二個控制群組的成員時,它便會被由該階層中的第一個控制群組中移除。一項工作不會有任何時候處於相同階層中的兩個控制群組中。
cpu
和 memory
子系統連至了一個名為 cpu_and_mem
的階層,並且 net_cls
子系統連至了一個名為 net
的階層,那麼一項執行中的 httpd
程序便能成為 cpu_and_mem
中,任何一個控制群組的成員,以及 net
中,任何一個控制群組的成員。
cpu_and_mem
裡、屬於 http
程序之控制群組,可能會將它的 CPU 時間限制為其它程序所配置的一半,並將它的記憶體使用量限制為最大 1,024
MB。此外,在 net
中,它所屬的控制群組可能會將它的傳輸率限制為每秒 30
MB。
系統上任何會自行分叉的程序(工作),皆會建立一項子程序(工作)。子工作會自動地成為其父程序所屬之所有控制群組的成員。接著,子工作便可視需求被移至不同的控制群組,不過一開始,它總是會繼承其父工作的控制群組(以程序的術語來講為「環境」)。
httpd
工作,它是個在 cpu_and_mem
階層中,名為 half_cpu_1gb_max
的控制群組中的成員,並且也是 net
階層中,一個名為 trans_rate_30
的控制群組中的成員。當該 httpd
程序將它自己分支時,它的子程序將會自動地成為 half_cpu_1gb_max
控制群組以及 trans_rate_30
控制群組的成員。它會繼承其父工作所屬的相同的控制群組。