システム・リソースへのアクセスの制御
systemctlコマンドを使用して、次のようにシステム・リソースへのcgroupのアクセスを制御します。
sudo systemctl [--runtime] set-property httpd CPUShares=512 MemoryLimit=1G
CPUShare
はCPUリソースへのアクセスを制御します。デフォルト値は1024であり、値を512にすると、cgroup
のプロセスのCPU時間へのアクセスが半分になります。同様に、MemoryLimit
はcgroup
で使用可能なメモリーの最大量を制御します。
ノート:
.service
拡張子をサービス名に指定する必要はありません。
--runtimeオプションを指定すると、システムを再起動したときに設定が維持されません。
かわりに、サービスのリソース設定は、/usr/lib/systemd/system
のサービスの構成ファイルにある[Service]
の見出しで変更できます。ファイルを編集すると、systemd
がその構成ファイルをリロードし、サービスを再開します。
sudo systemctl daemon-reload
sudo systemctl restart service
スコープ内で共通のコマンドを実行し、systemctlを使用して、これらの一時cgroupsのシステム・リソースへのアクセスを制御できます。スコープ内でコマンドを実行するには、systemd-runコマンドを使用します。
sudo systemd-run --scope --unit=group_name [--slice=slice_name]
デフォルトのsystem
スライスでグループを作成しない場合は、別のスライスまたは新しいスライスの名前を指定できます。次の例では、myslice.slice
のmymon.scope
でmymonitorというコマンドを実行します。
sudo systemd-run --scope --unit=mymon --slice=myslice mymonitor
Running as unit mymon.scope.
ノート:
--scope
オプションを指定しない場合は、制御グループがスコープではなく、サービスとして作成されます。
次に、systemctlを使用して、サービスと同じように、スコープのシステム・リソースへのアクセスを制御します。ただし、サービスとは異なり、次のように.scope
拡張子を指定する必要があります。
sudo systemctl --runtime set-property mymon.scope CPUShares=256
詳細は、「制御グループについて」、およびsystemctl(1)
、systemd-cgls(1)
、systemd.resource-control(5)
の各マニュアル・ページを参照してください。