2.5. 创​​​建​​​控​​​制​​​组​​​群​​​

请​​​使​​​用​​​ cgcreate 命​​​令​​​创​​​建​​​ cgroup。​​​cgcreate 的​​​语​​​法​​​为​​​:cgcreate -t uid:gid -a uid:gid -g subsystems:path ,其​​​中​​​:
  • -t(可​​​选​​​)- 指​​​定​​​用​​​户​​​(使​​​用​​​用​​​户​​​ ID,uid)和​​​组​​​群​​​(使​​​用​​​组​​​群​​​ ID,gid)以​​​便​​​让​​​这​​​个​​​ cgroup 拥​​​有​​​ tasks 伪​​​文​​​件​​​。​​​这​​​个​​​用​​​户​​​可​​​在​​​该​​​ cgroup 中​​​添​​​加​​​任​​​务​​​。​​​

    注意

    请​​​注​​​意​​​:从​​​ cgroup 中​​​删​​​除​​​任​​​务​​​的​​​唯​​​一​​​方​​​法​​​是​​​将​​​其​​​移​​​动​​​到​​​不​​​同​​​的​​​ cgroup中​​​。​​​要​​​移​​​动​​​任​​​务​​​,该​​​用​​​户​​​必​​​须​​​有​​​目​​​的​​​ cgroup 的​​​写​​​访​​​问​​​。​​​对​​​源​​​ cgroup 的​​​写​​​访​​​问​​​并​​​不​​​重​​​要​​​。​​​
  • -a(可​​​选​​​)- 指​​​定​​​用​​​户​​​(使​​​用​​​用​​​户​​​ ID,uid)和​​​组​​​群​​​(使​​​用​​​组​​​群​​​ ID,gid)以​​​便​​​这​​​个​​​ cgroup 拥​​​有​​​ tasks 外​​​的​​​所​​​有​​​伪​​​文​​​件​​​。​​​这​​​个​​​用​​​户​​​可​​​修​​​改​​​这​​​个​​​ cgroup 中​​​的​​​任​​​务​​​对​​​系​​​统​​​资​​​源​​​的​​​访​​​问​​​。​​​
  • -g -- 指​​​定​​​在​​​其​​​中​​​创​​​建​​​ cgroup 的​​​层​​​级​​​,格​​​式​​​为​​​与​​​那​​​些​​​层​​​级​​​关​​​联​​​的​​​用​​​逗​​​号​​​分​​​开​​​的​​​ subsystems 列​​​表​​​。​​​如​​​果​​​这​​​个​​​列​​​表​​​中​​​的​​​子​​​系​​​统​​​在​​​不​​​同​​​的​​​层​​​级​​​中​​​,则​​​要​​​在​​​每​​​个​​​层​​​级​​​中​​​都​​​创​​​建​​​该​​​组​​​群​​​。​​​层​​​级​​​列​​​表​​​后​​​是​​​一​​​个​​​冒​​​号​​​,然​​​后​​​是​​​与​​​该​​​层​​​级​​​有​​​关​​​的​​​子​​​组​​​群​​​ path。​​​不​​​要​​​在​​​该​​​ path 中​​​包​​​含​​​层​​​级​​​挂​​​载​​​点​​​。​​​
    例​​​如​​​:目​​​录​​​ /cgroup/cpu_and_mem/lab1/ 中​​​的​​​ cgroup 称​​​为​​​ lab1 -- 其​​​路​​​径​​​已​​​唯​​​一​​​确​​​定​​​,因​​​为​​​对​​​于​​​给​​​定​​​的​​​子​​​系​​​统​​​最​​​多​​​有​​​一​​​个​​​层​​​级​​​。​​​还​​​请​​​注​​​意​​​该​​​组​​​群​​​可​​​由​​​创​​​建​​​该​​​ cgroup 的​​​现​​​有​​​层​​​级​​​中​​​的​​​所​​​有​​​子​​​系​​​统​​​控​​​制​​​,即​​​使​​​没​​​有​​​在​​​ cgcreate 命​​​令​​​中​​​指​​​定​​​这​​​些​​​子​​​系​​​统​​​ -- 请​​​参​​​考​​​ 例 2.5 “cgcreate 用​​​法​​​”。​​​
因​​​为​​​同​​​一​​​层​​​级​​​中​​​的​​​所​​​有​​​ cgroup 有​​​相​​​同​​​的​​​控​​​制​​​器​​​,该​​​子​​​组​​​群​​​与​​​其​​​父​​​ cgroup 有​​​相​​​同​​​的​​​控​​​制​​​器​​​。​​​

例 2.5. cgcreate 用​​​法​​​

请​​​考​​​虑​​​在​​​ cpu_and_mem 层​​​级​​​中​​​一​​​同​​​挂​​​载​​​ cpu 和​​​ memory 子​​​系​​​统​​​的​​​系​​​统​​​,并​​​将​​​ 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 命​​​令​​​直​​​接​​​创​​​建​​​ cgroup 的​​​子​​​组​​​群​​​:
~]# mkdir /cgroup/hierarchy/name/child_name
例​​​如​​​:
~]# mkdir /cgroup/cpuset/lab1/group1