システム・リソースへのアクセスの制御

systemctlコマンドを使用して、次のようにシステム・リソースへのcgroupのアクセスを制御します。

sudo systemctl [--runtime] set-property httpd CPUShares=512 MemoryLimit=1G

CPUShareはCPUリソースへのアクセスを制御します。デフォルト値は1024であり、値を512にすると、cgroupのプロセスのCPU時間へのアクセスが半分になります。同様に、MemoryLimitcgroupで使用可能なメモリーの最大量を制御します。

ノート:

.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.slicemymon.scopemymonitorというコマンドを実行します。

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)の各マニュアル・ページを参照してください。