Использование CPUQuota в systemd
Я пытаюсь установить жесткий предел в использовании ЦП для команды dd. Я создал следующий файловый файл
[Unit]
Description=Virtual Distributed Ethernet
[Service]
ExecStart=/usr/bin/ddcommand
CPUQuota=10%
[Install]
WantedBy=multi-user.target
которые вызывают следующие простые script
#!/bin/sh
dd if=/dev/zero of=/dev/null bs=1024k
Как я видел в этом руководстве:
http://www.freedesktop.org/software/systemd/man/systemd.resource-control.html
Использование ЦП для моей службы dd не должно превышать 10%. Но когда я запускаю команду system-cgtop, использование составляет около 70-75%.
Любые идеи о том, что я делаю неправильно, и как я могу это исправить?
P.S. Когда я выполняю systemctl show dd
, я получаю следующие результаты относительно CPU
CPUShares=18446744073709551615
StartupCPUShares=18446744073709551615
CPUQuotaPerSecUSec=100ms
LimitCPU=18446744073709551615
Ответы
Ответ 1
Еще одна вещь, которую вы могли бы попробовать, - запустить cpulimit
в качестве демона. Я не тестировал это; это просто идея.
В репозиториях ubuntu:
sudo apt install cpulimit
Используйте systemd, если хотите. Это должно ограничивать все экземпляры dd до 20% CPU.
[Unit]
Description=dd CPU Limiter
[Service]
ExecStart=/usr/bin/cpulimit -e dd -l 20
[Install]
WantedBy=multi-user.target
источник
Ответ 2
Альтернативные способы ограничения использования процессора:
1. Используйте команду tasket.
2. Используйте контрольные группы.
3. Используйте докеры и ограничьте использование процессора с помощью cpuset.
4. Уменьшите количество потоков в приложении. При таком подходе требуется некоторый расчет.
Ответ 3
Подразумевает "CPUAccounting = true"
Так что это должно быть
[Service]
ExecStart=/usr/bin/ddcommand
CPUAccounting=true
CPUQuota=10%
Ответ 4
Опция "CPUQuota =" зависит от количества процессоров в системе, поскольку она гарантирует, что выполняемые процессы никогда не получат больше, чем% процессорного времени на ONE CPU; и я думаю, что использование процессора%, которое вы получаете с помощью системы cmd d -cgtop, находится на всех процессорах системы.