Почему этот системный ресурс не ограничен?

Хорошо, чтобы мои руки были грязными с группами и systemd, я написал самую придирчивую программу C, о которой я мог думать (просто таймер и цикл блокировки во время цикла), и назвал его 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 sudo systemctl start idiot.service; top | grep idiot sudo systemctl start idiot.service; top | grep idiot , который предсказуемо сказал мне, что idiot использовал 100% CPU. Теперь, согласно ссылке , мы должны иметь возможность ограничить ресурсы этой службы следующим:

 sudo systemctl set-property idiot.service CPUShares=100 sudo systemctl daemon-reload sudo systemctl restart idiot.service 

который я сделал, а затем top . Но это все еще говорит мне, что idiot использует 100% процессора! Что я делаю не так?

Примечание. Я также попытался добавить CPUShares=100 в файл устройства, безрезультатно

Согласно man systemd.resource.control , CPUShares=weight будет работать следующим образом:

Доступное время процессора разделяется между всеми модулями в пределах одного фрагмента относительно их общего веса.

Поскольку вы ничего не сказали нам о других членах одного и того же фрагмента, я полагаю, что нет других членов, поэтому было бы полезно использовать весь процессор.

Если вы хотите играть с управлением ЦП, попробуйте CPUQuota=20% . Эта директива документируется следующим образом:

CPUQuota = 20% гарантирует, что выполняемые процессы никогда не получат более 20% процессорного времени на одном CPU.