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 group1
の cpuset.cpus
疑似ファイルに書き込みます。
~]# echo 0-1 > /cgroup/cpuset/group1/cpuset.cpus
この値を入れると、この cgroup のタスクはシステム上の CPU 0 と 1 に限定されます。