以前は、sched_userなどのカーネル構成オプションがcgroupsの下にありました。これにより、(私の知る限り)すべてのユーザーがシステムリソースを公平に共有できるようになりました。2.6.35では使用できません。すべてのユーザー(rootを含む)間でio / cpu / memoryリソースを自動的に共有するようにシステムを構成する方法はありますか?これまでにcgroupを設定したことがありません。そうするための良いチュートリアルはありますか?どうもありがとうございました。
以前は、sched_userなどのカーネル構成オプションがcgroupsの下にありました。これにより、(私の知る限り)すべてのユーザーがシステムリソースを公平に共有できるようになりました。2.6.35では使用できません。すべてのユーザー(rootを含む)間でio / cpu / memoryリソースを自動的に共有するようにシステムを構成する方法はありますか?これまでにcgroupを設定したことがありません。そうするための良いチュートリアルはありますか?どうもありがとうございました。
回答:
カーネルのドキュメントでは、cgroupの一般的な範囲と例が提供されています。
cgroups-bin
(依存するパッケージlibcgroup1
、既に配布が提供する)は問題ないはずです。
構成は、次の2つのファイルを編集することによって行われます。
/etc/cgconfig.conf
libcgroupによって、制御グループ、それらのパラメーター、およびマウントポイントを定義するために使用されます。
/etc/cgrules.conf
libcgroupによって使用され、プロセスが属する制御グループを定義します。
これらの構成ファイルにはすでに例が含まれているため、要件に合わせて調整してみてください。マニュアルページはそれらの設定をかなりカバーしています。
その後、ワークロードマネージャーとルールデーモンを起動します。
service cgconfig restart
service cgred restart
ワークロードマネージャ(cgconfig)は、リソースの割り当てを担当します。
マネージャーに新しいプロセスを追加します。
cgexec [-g <controllers>:<path>] command [args]
すでに実行中のプロセスをマネージャーに追加します。
cgclassify [-g <controllers>:<path>] <pidlist>
または、cgrules.confファイルとCGroupルールデーモン(cgred)を自動的に上書きして、新しく生成されたすべてのプロセスを指定されたグループに強制します。
/etc/cgconfig.confの例:
group group1 {
perm {
task {
uid = alice;
gid = alice;
}
admin {
uid = root;
gid = root;
}
}
cpu {
cpu.shares = 500;
}
}
group group2 {
perm {
task {
uid = bob;
gid = bob;
}
admin {
uid = root;
gid = root;
}
}
cpu {
cpu.shares = 500;
}
}
mount {
cpu = /dev/cgroups/cpu;
cpuacct = /dev/cgroups/cpuacct;
}
/etc/cgrules.confの例:
alice cpu group1/
bob cpu group2/
これにより、ユーザー「alice」と「bob」の間でCPUリソースが約50〜50共有されます。