2.7. パラメーターのセッティング

該当する cgroup を修正できるパーミッションを持つユーザーアカウントから、cgset コマンドで、サブシステムのパラメーターを設定します。たとえば、/cgroup/cpuset/group1 が存在する場合には、以下のようなコマンドで、このグループがアクセスできる CPU を指定します。
cpuset]# cgset -r cpuset.cpus=0-1 group1
cgset の構文は以下のとおりです。
cgset -r parameter=value path_to_cgroup
ここで、
  • parameter は設定するパラメーターで、特定の cgroup のディレクトリ内のファイルに対応しています。
  • value はパラメーター用の値です
  • path_to_cgroup階層の root に相対的な cgroup へのパスです。たとえば、root グループのパラメーターを設定するには、(/cgroup/cpuacct/ が存在する場合)、以下のコマンドを実行します。
    cpuacct]# cgset -r cpuacct.usage=0 /
    また、. は root グループ (つまり、root グループ自体) に対して相対的であるため、以下のコマンドを実行することもできます。
    cpuacct]# cgset -r cpuacct.usage=0 .
    ただし、/ が推奨の構文である点に注意してください。

    注記

    root グループに設定できるパラメーターはごくわずかです (例: 上記の例に示した、cpuacct.usage パラメーター)。これは、root グループが既存のリソースをすべて所有しており、特定のパラメーター (例: cpuset.cpu パラメーター) を定義することによって既存のプロセスを制限することは意味がないためです。
    root グループのサブグループである group1 のパラメーターを設定するには、以下のコマンドを実行します。
    cpuacct]# cgset -r cpuacct.usage=0 group1
    グループ名の末尾のスラッシュ (例: cpuacct.usage=0 group1/) はオプションです。
cgset で設定できる値は、特定の階層のよりも高いレベルで設定されている値によって左右される可能性があります。たとえば、group1 がシステム上の CPU 0 のみを使用するように制限されている場合、group1/subgroup1 が CPU 0 および 1 を使用するように、もしくは CPU 1 のみを使用するようには設定できません。
また、cgset を使用して、異なる cgroup からパラメーターをコピーすることもできます。以下はその例です。
~]# cgset --copy-from group1/ group2/
cgset を使用してパラメーターをコピーする構文は以下のとおりです。
cgset --copy-from path_to_source_cgroup path_to_target_cgroup
ここで、
  • path_to_source_cgroup は、コピーするパラメーターを持つ、その階層の root グループに対して相対的な cgroup へのパスです。
  • path_to_target_cgroup は、その階層の root グループに対して相対的な、コピー先 cgroup へのパスです。
一つのグループから別のグループにパラメーターをコピーする前には、様々なサブシステムの必須パラメーターが設定済みであることを確認してください。必須パラメーターが設定されていない場合にはコマンドが失敗してしまいます。必須パラメーターに関する詳しい情報は、必須パラメーター を参照してください。

その他の方法

cgroup ディレクトリ内のパラメーターを設定するには、echo コマンドを使用して その値を該当するサブシステムの疑似ファイルに書き込みます。たとえば、以下のコマンドは、値 0-1 を cgroup group1cpuset.cpus 疑似ファイルに書き込みます。
~]# echo 0-1 > /cgroup/cpuset/group1/cpuset.cpus
この値を入れると、この cgroup のタスクはシステム上の CPU 0 と 1 に限定されます。