cgroups を使う@CentOS7

こんにちは 北川です。

この記事はTECHSCORE Advent Calendar 2014、17日目の記事です。

ちょっとした案件で、CPUに制限をかける必要があり
cgroups を使ってみましたので紹介したいと思います。

cgroupsとは control groupsの略でプロセスグループごとにCPUやメモリ・ディスクI/Oなどの利用を制限できるLinuxカーネルの機能です。

cgroup cgred

前提としてOSはCentOS7でお話します。
また、説明簡略化のため基本 root ユーザで操作しています。

cgroup を利用するために libcgroup と libcgroup-tools パッケージをインストールする必要があります。
CentOS7(RHEL 7系)から libcgroup-toolsが追加で必要となっているので注意してください。

今回はcgconfig.confを使って制限を掛けました。
cgcreate を使って設定する方法もありますが今回はcgconfig.confを使います。

cgconfig.confに下記の設定を追加します。

今回は kitagawa ユーザに対して制限したかったためcgredを使います。

cgred は、/etc/cgrules.conf で設定に従ってタスクを cgroups に移動するデーモンです。

cgrules.conf に下記の設定を追加します。

起動と自動起動

cgconfig,cgredの起動を行います。また、合わせて自動起動の設定も行います。

結果確認

今回の場合、kitagawaユーザのすべてのプロセスが対象となります。
tasks ファイルに対象となったプロセスIDが記載されますので複数のプロセスが
制限の対象であることを確認できます。

実際にCPUに負荷をかけ制限が掛かっているか確認します。

ピッタシとはなりませんでしたがCPU処理が50%で制限されているのが確認できました。

まとめ

最初に記載しましたが、cgroupsはCPUの他にもメモリ・ディスクI/Oなども制限をかけることができます。
今回はRHEL 7 Guideやman cgconfig.conf を参考にしましたので
その他の設定をする場合は参照してもらえればと思います。

Comments are closed, but you can leave a trackback: Trackback URL.