Puncte:1

Limitați suma a 2 procese de utilizare a procesorului?

drapel br

2 procese, numiți-o A și B
A are prioritate mare... B are prioritate scăzută
Vreau să limitez utilizarea totală a CPU a acestor 2 procese sub 80%

Uneori, A nu are nimic de făcut. Utilizarea procesorului este de 0%, în acest moment, sper să execute B și să ocupe 80% procesor
Uneori, A funcționează, utilizarea procesorului este de 80%, în acest moment, sper că B nu face nimic și nu folosește procesorul (sau folosește doar puțin, 1%)
Uneori, A ocupă 30% CPU, în acest moment, B ar trebui să ocupe 50% CPU

Sunt sub Ubuntu 20.04, există vreo modalitate de a face asta?

Puncte:1
drapel jp

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.

  • instalați instrumente
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

drapel br
Multumesc, foarte detaliat! L-am încercat, a limitat utilizarea cpu-ului sub 80%, dar numai pentru 1 cpu, PC-ul meu are 8 cpu, așa că de fapt ocupă 80% din 800%, restul 7 cpu-uri încă inactiv. Sper că poate folosi 80% din totalul CPU-ului, deci 800% * 80% = 640%, există vreo modalitate de a face acest lucru?
Andrew Lowther avatar
drapel jp
Cred că ar trebui să înmulți cota cu numărul de nuclee. `echo $((8 * 800000)) > /sys/fs/cgroup/cpu/max80/cpu.cfs_quota_us`. Dacă utilizați `stress` pentru a testa, atunci trebuie să creșteți numărul de lucrători `stress --cpu 8`.
Puncte:0
drapel cn

În Linux, prioritatea rulării programelor poate fi modificările cu renice comanda. Puteți citi despre tastarea comenzii omul Renice pe terminal. Tuturiile pe internet vă vor ajuta să înțelegeți cum funcționează acest lucru, de ex. Tecmint, Speranța computerului.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.