Show Table of Contents
3.4. cpuset
cpuset 子系統會指派每個 CPU 與記憶體節點至控制群組。每個 cpuset 都可以根據以下參數來指定,在控制群組虛擬檔案系統裡,每個參數都有獨立的「pseudofile」(偽檔案):
重要
在您將任務移到使用了任何子系統的 cgroup 之前,您必須設定這些子系統的一些必要參數。舉例來說,在將任務移到使用
cpuset 子系統的 cgroup 之前,cpuset.cpus 與 cpuset.mems 參數必須為此 cgroup 定義。
- cpuset.cpus(必要)
- 這會指定此控制群組的任務所允許存取的 CPU。這是 ASCII 格式、以逗號隔開的清單,減號(
-)用來區分範圍。例如:0-2,16
代表第 0、1、2、與 16 個 CPU - cpuset.mems(必要)
- 指定此控制群組的任務所允許存取的記憶體節點。這是 ASCII 格式、以逗號隔開的清單,減號(
-)用來區分範圍。例如:0-2,16
表示第 0、1、2 與 16 的記憶體節點。 - cpuset.memory_migrate
- 這包含了一個旗標值(
0或1),在cpuset.mems改變時,是否要把記憶體中的分頁轉移到新的節點上。預設上,記憶體轉移是停用的(0),分頁會留在一開始分配的節點上,即使這個節點已經不再是cpuset.mems所指定的節點之一。如果啟用的話(1),那麼系統就會把分頁轉移至cpuset.mems所指定的參數之記憶體分頁上,如果可能的話,會保留其相對位置:舉例來說,清單上第二個節點的分頁最開始是由cpuset.mems所指定,它會被分配到cpuset.mems所指定的清單之第二個節點上(如果空間允許的話)。 - cpuset.cpu_exclusive
- 這包含了旗標值(
0或1),指定其它 cpuset 與其父子是否能分享指定給此 cpuset 的處理器。就預設值(0),CPU 不會特別只分配給一個 cpuset。 - cpuset.mem_exclusive
- 這包含了旗標值(
0或1),指定其它 cpuset 是否可以分享指定給這個 cpuset 的記憶體節點。預設上(0)記憶體節點是不會專門分配給一個 cpuset。專為 cpuset 保留記憶體節點(1)的功用,與使用cpuset.mem_hardwall啟用記憶體 hardwall 是一樣的。 - cpuset.mem_hardwall
- 這包含了旗標值(
0或1),指定 kernel 分配記憶體分頁與緩衝區資料時,是否要限制在指定給此 cpuset 的記憶體節點。預設上(0),分頁與緩衝區資料會由屬於多個使用者的程序所共享。啟用 hardwall 之後(1),每個任務的使用者分配都會被區分開來。 - cpuset.memory_pressure
- 這是一個唯讀檔案,包含此 cpuset 的程序所建立的 memory pressure(記憶體壓力)的執行平均值。這個偽檔案的值會在
cpuset.memory_pressure_enabled啟用時自動更新;若沒啟用的話,這個偽檔案的值會是0。 - cpuset.memory_pressure_enabled
- 這包含了旗標值(
0或1),指定系統是否要運算這個控制群組的程序所建立的 memory pressure(記憶體壓力)。計算後的值會寫至cpuset.memory_pressure,並且呈現程序試圖釋放記憶體的速率,計算方式是每秒試圖重新取得記憶體的數目,乘以 1,000。 - cpuset.memory_spread_page
- 這包含了一個旗標值(
0或1),指定檔案系統緩衝區是不是要散佈於分配給這個 cpuset 的記憶體節點。預設值(0)表示不把這些記憶體分頁平均分配給緩衝區,同時緩衝區都會放在建立緩衝區的程序所處的同一個節點上。 - cpuset.memory_spread_slab
- 這包含了旗標值(
0或1),指定 kernel slab 是不是要把快取檔案 I/O 的運作,平均分配到 cupset 去。預設值(0)表示不平均分配 kernel slab 快取,而且 slab 快取會放在建立快取的程序所在的同樣節點上。 - cpuset.sched_load_balance
- 包含了旗標值(
0或1),指定 kernel 是不是要對此 cpuset 中的 CPU 進行負載平衡。預設值(1)會進行負載平衡,把負載過重的 CPU 的程序移到負載較輕的 CPU 上。然而請注意,若在任何父控制群組中啟用了負載平衡,在控制群組中設定此旗標將不會造成影響,因為負載平衡已在更高的層級中進行了。因此,若要停用控制群組中的負載平衡,您也必須停用它在層級中,其所有 parent 的負載平衡。在此情況下,您亦必須考量是否要啟用該控制群組同層級的負載平衡。 - cpuset.sched_relax_domain_level
- 這包含了介於
-1到一個小的正整數之間,表示 kernel 進行負載平衡的 CPU 範圍。如果cpuset.sched_load_balance停用的話,這個值就沒有任何意義。這個值的精確意義與系統架構有關;但以下是幾個典型的值:cpuset.sched_relax_domain_level 的值值 效用 -1系統預設值,用於負載平衡 0不要立即進行負載平衡;只有在定期的時候進行 1立即對同樣核心的所有執行續進行負載平衡 2立即對同樣套件的所有核心進行負載平衡 3立即對同樣節點或刀鋒伺服器的所有 CPU 進行負載平衡 4立即對 NUMA 架構的多個 CPU 進行負載平衡 5立即對 NUMA 架構的所有 CPU 進行負載平衡

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.