Pe Linux, puteți fixa un proces la un procesor cu set de sarcini
. (Vedea set de sarcini de om
). (Vezi si https://unix.stackexchange.com/questions/425065/linux-how-to-know-which-processes-are-pinned-to-which-core)
De asemenea, puteți utiliza cpulimit
(vedea om cpulimit
) care utilizează grupuri de control pentru a seta o limită de utilizare a procesorului, unde 100 ar fi echivalentul unui procesor.
Pentru a utiliza oricare dintre acestea, va trebui să aflați ce proces este lansat pentru utilizator și să adăugați comenzile de mai sus. Nu sunt familiarizat cu Virtualmin, dar fiind open source bănuiesc că vei putea afla de unde lansează aceste procese destul de ușor, grepând codul sursă.
Timpul CPU în limite.conf
este timpul CPU în minute, așa cum se arată în coloana Timp de top
deci este doar o măsură a cât timp este permis să ruleze exclusiv procesul.
Valoarea „core” din limits.conf (vezi limitele omului.conf
) se referă la dimensiunea unui fișier dump de bază, care este un dump pe care îl puteți activa pentru un proces dacă se blochează, pentru depanare.
Fundalul este că Linux a fost proiectat să facă exact opusul - să răspândească sarcinile pe CPU-uri - și este extrem de bun la asta. Singurul motiv pentru a limita în mod rezonabil sarcinile la un procesor pe o mașină cu mai multe nuclee, este să faci ceva cu sincronizare perfectă - sau atacuri de sincronizare.
Alte opțiuni sunt blocarea sistemului de operare pe anumite nuclee din bootloader sau puteți emula CPU-uri singulare sau puteți rula containere fixate pe anumite procesoare.