i cgroup sono stati creati proprio per questo motivo.
http://www.kernel.org/doc/Documentation/cgroups/
http://www.serverwatch.com/tutorials/article.php/3921001/Setting-Up-Linux-Cgroups.htm
Ci vuole un po 'di tempo per familiarizzare con loro, e credo che tu abbia bisogno dell'accesso root per configurarli, ma può essere tutto scritto. Il nuovo Ubuntus ha un file .conf in modo da non dover scrivere il tuo script. Non sono sicuro del 10.10.
Un buon punto di partenza è in questa risposta:
https://askubuntu.com/a/94743/170177
Si noti che i cgroups sono ancora in fase di sviluppo attivo, quindi alcune funzionalità potrebbero non essere disponibili nel kernel corrente.
L'uso di cpu.shares di cgroups non fa nulla che un buon valore non farebbe. Sembra che tu voglia effettivamente limitare i processi, il che può sicuramente essere fatto.
Sarà necessario utilizzare uno o due script e / o modificare /etc/cgconfig.conf per definire i parametri desiderati.
In particolare, si desidera modificare i valori cpu.cfs_period_us e cpu.cfs_quota_us . Sarà quindi possibile eseguire il processo per microsecondi cpu.cfs_quota_us per microsecondi cpu.cfs_period_us .
Per esempio:
Se cpu.cfs_period_us = 50000 e cpu.cfs_quota_us = 10000, il processo riceverà il 20% del tempo massimo della CPU, indipendentemente da ciò che sta succedendo.
In questa schermata ho dato al processo il 2% del tempo della CPU:
Per quanto riguarda il processo, funziona al 100%.
Le impostazioni cpu.shares invece possono e continuano a utilizzare il 100% del tempo di inattività della CPU.
In questo esempio simile ho fornito il processo cpu.shares = 100 (di 1024):
Come puoi vedere, il processo sta ancora consumando tutto il tempo di inattività della CPU.
Riferimenti:
http://manpages.ubuntu.com/manpages/precise/man5/cgconfig.conf.5.html
http://kennystechtalk.blogspot.co.uk/2015/04/throttling-cpu-usage-with-linux-cgroups .html