cgroupsとsystemdを使って手を汚すことができるように私が考える最も愚かなCプログラム(ただのタイマーとspinlock whileループ)を作成し、名前を付けて、次のファイルをidiot
添付idiot.service
しました/sys/fs/systemd/system/
。
[Unit]
Description=Idiot - pretty idiotic imo
[Service]
Type=simple
ExecStart=/path/to/idiot
User=bruno
CPUShares=100
[Install]
WantedBy=default.target
その後、これを行いましたが、sudo systemctl start idiot.service; top | grep idiot
予想通りidiot
CPU使用率は100%でした。今によると協会、次のサービスリソースを制限できる必要があります。
sudo systemctl set-property idiot.service CPUShares=100
sudo systemctl daemon-reload
sudo systemctl restart idiot.service
こうやったんだけどtop
…でもidiot
CPU使用率が100%だと思います!私は何が間違っていましたか?
CPUShares=100
注:ユニットファイルに追加しようとしましたが、役に立ちませんでした。
ベストアンサー1
man systemd.resource.control
によると、CPUShares=weight
次のように動作します。
使用可能なCPU時間は、CPU時間共有の重みに基づいてスライス内のすべてのデバイスに分配されます。
同じスライスの他のメンバーについて何も知らせていないので、他のメンバーがないので、サービスがすべてのCPUを使用することが適切であると仮定します。
CPU制御でプレイしたい場合はお試しくださいCPUQuota=20%
。コマンドは次のように記録されます。
CPUQuota = 20%は、実行中のプロセスがCPUのCPU時間の20%を超えないようにします。