Чтобы быть точным, вам, вероятно, нужно использовать контрольные группы.
Вот краткий пример, который я тестировал на Ubuntu 20.04. Для простоты это виртуальная машина с одним процессором, и все команды выполнялись от имени пользователя root.
apt-get установить cgroup-tools стресс
- создайте иерархию контрольных групп, которые будут ограничены процессором. Имя родителя
макс80
и у него есть А
и Б
под этим.
cgcreate -g процессор:max80/A -g процессор:max80/B
- ограничить родительскую cgroup
макс80
до 80% загрузки процессора.
эхо 1000000 > /sys/fs/cgroup/cpu/max80/cpu.cfs_period_us
эхо 800000 > /sys/fs/cgroup/cpu/max80/cpu.cfs_quota_us
- ограничить дочернюю группу
Б
иметь 10% акций. Вы упомянули 1% в своем посте, но 10% показать проще. Б
будет использовать весь доступный ЦП, но если возникнут конфликты с процессами в А
то он будет ограничен 10%.
эхо $((1024 * 10/100)) > /sys/fs/cgroup/cpu/max80/B/cpu.shares
в действии
- управлять
стресс
процесс всего за А
. Загрузка ЦП будет составлять 80% для стресс
процесс выполнения работы.
root@ubuntu:~# cgexec -g cpu:max80/A stress --cpu 1 &
[1] 2040 г.
стресс: информация: [2040] диспетчеризация свиней: 1 процессор, 0 io, 0 vm, 0 hdd
root@ubuntu:~# ps -o pid,%cpu,cmd --sort -%cpu -p $(напряжение pidof)
PID %CPU CMD
2041 80,4 стресс --процессор 1
2040 0.0 стресс --процессор 1
root@ubuntu:~# убить стресс
- управлять
стресс
процесс всего за Б
. Загрузка процессора будет 80%.
root@ubuntu:~# cgexec -g cpu:max80/B stress --cpu 1 &
[1] 2065
стресс: информация: [2065] диспетчеризация свиней: 1 процессор, 0 io, 0 vm, 0 hdd
root@ubuntu:~# ps -o pid,%cpu,cmd --sort -%cpu -p $(напряжение pidof)
PID %CPU CMD
2066 80,6 стресс --процессор 1
2065 0.0 стресс --процессор 1
root@ubuntu:~# убить стресс
- управлять
стресс
процесс в А
и Б
. Загрузка ЦП будет разделена на 90%/10%.
root@ubuntu:~# cgexec -g cpu:max80/A stress --cpu 1 &
[1] 2078
стресс: информация: [2078] диспетчеризация свиней: 1 процессор, 0 io, 0 vm, 0 hdd
root@ubuntu:~# cgexec -g cpu:max80/B stress --cpu 1 &
[2] 2080
стресс: информация: [2080] диспетчеризация свиней: 1 процессор, 0 io, 0 vm, 0 hdd
root@ubuntu:~# ps -o pid,%cpu,cmd --sort -%cpu -p $(напряжение pidof)
PID %CPU CMD
2079 71,9 стресс --процессор 1
2081 7.2 стресс --процессор 1
2078 0.0 стресс --процессор 1
2080 0.0 стресс --процессор 1
root@ubuntu:~# убить стресс
Ссылки