Pentru a fi exact așa, probabil că trebuie să utilizați cgrupuri.
Iată un exemplu rapid pe care l-am testat pe Ubuntu 20.04. Pentru simplitate, acesta este un singur VM cu CPU și toate comenzile au fost executate ca root.
apt-get install cgroup-tools stress
- creați o ierarhie de cgroups care va fi limitată de CPU. Părintele este numit
max80
si are A
și B
sub ea.
cgcreate -g CPU:max80/A -g CPU:max80/B
- limita cgroup-ul părinte
max80
la 80% din CPU.
echo 1000000 > /sys/fs/cgroup/cpu/max80/cpu.cfs_period_us
echo 800000 > /sys/fs/cgroup/cpu/max80/cpu.cfs_quota_us
- limitați cgroup-ul copil
B
să aibă 10% din acțiuni. Ai menționat 1% în postarea ta, dar 10% este mai ușor de afișat. B
va folosi tot procesorul disponibil, dar dacă există o dispută cu procesele în A
atunci va fi limitat la 10%.
echo $((1024 * 10 / 100 )) > /sys/fs/cgroup/cpu/max80/B/cpu.shares
In actiune
- alerga a
stres
proces în doar A
. Utilizarea procesorului va fi de 80% pentru stres
proces care face munca.
root@ubuntu:~# cgexec -g cpu:max80/A stress --cpu 1 &
[1] 2040
stres: info: [2040] porci de expediere: 1 cpu, 0 io, 0 vm, 0 hdd
root@ubuntu:~# ps -o pid,%cpu,cmd --sort -%cpu -p $(pidof stress)
PID %CPU CMD
2041 80.4 stres --cpu 1
2040 0.0 stres --cpu 1
root@ubuntu:~# killall stress
- alerga a
stres
proces în doar B
. Utilizarea procesorului va fi de 80%.
root@ubuntu:~# cgexec -g cpu:max80/B stress --cpu 1 &
[1] 2065
stres: info: [2065] porci de expediere: 1 cpu, 0 io, 0 vm, 0 hdd
root@ubuntu:~# ps -o pid,%cpu,cmd --sort -%cpu -p $(pidof stress)
PID %CPU CMD
2066 80.6 stres --cpu 1
2065 0.0 stres --cpu 1
root@ubuntu:~# killall stress
- alerga a
stres
proces în A
și B
. Utilizarea procesorului va fi împărțită 90%/10%.
root@ubuntu:~# cgexec -g cpu:max80/A stress --cpu 1 &
[1] 2078
stres: info: [2078] porci de expediere: 1 cpu, 0 io, 0 vm, 0 hdd
root@ubuntu:~# cgexec -g cpu:max80/B stress --cpu 1 &
[2] 2080
stres: info: [2080] porci de expediere: 1 cpu, 0 io, 0 vm, 0 hdd
root@ubuntu:~# ps -o pid,%cpu,cmd --sort -%cpu -p $(pidof stress)
PID %CPU CMD
2079 71,9 stres --cpu 1
2081 7.2 stres --cpu 1
2078 0.0 stres --cpu 1
2080 0,0 stres --cpu 1
root@ubuntu:~# killall stress
Legături