Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

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 進​​​行​​​負​​​載​​​平​​​衡​​​