cgroups ont été créés exactement pour cette raison.
http://www.kernel.org/doc/Documentation/cgroups/
http://www.serverwatch.com/tutorials/article.php/3921001/Setting-Up-Linux-Cgroups.htm
Cela prend un peu de temps pour vous familiariser avec eux, et je pense que vous avez besoin d'un accès root pour les configurer, mais tout peut être scripté. Les Ubuntus plus récents ont un fichier .conf afin que vous n'ayez pas à écrire votre propre script. Je ne suis pas sûr de 10h10.
Un bon endroit pour commencer est dans cette réponse:
https://askubuntu.com/a/94743/170177
Notez que cgroups est toujours en cours de développement, donc certaines fonctionnalités peuvent ne pas être disponibles dans votre noyau actuel.
L'utilisation de cpu.shares de cgroups ne fait rien qu'une valeur intéressante ne ferait pas. Il semble que vous souhaitiez réellement limiter les processus, ce qui peut certainement être fait.
Vous devrez utiliser un ou deux scripts et / ou modifier /etc/cgconfig.conf pour définir les paramètres souhaités.
Plus précisément, vous souhaitez modifier les valeurs cpu.cfs_period_us et cpu.cfs_quota_us . Le processus sera alors autorisé à s'exécuter pendant cpu.cfs_quota_us microsecondes par cpu.cfs_period_us microsecondes.
Par exemple:
Si cpu.cfs_period_us = 50000 et cpu.cfs_quota_us = 10000, le processus recevra 20% du temps processeur maximum, quoi qu'il se passe d'autre.
Dans cette capture d'écran, j'ai donné au processus 2% du temps CPU:

En ce qui concerne le processus, il fonctionne à 100%.
Les paramètres cpu.shares , d'autre part, peuvent et utiliseront toujours 100% du temps processeur inactif.
Dans cet exemple similaire, j'ai donné le processus cpu.shares = 100 (sur 1024):

Comme vous pouvez le voir, le processus consomme toujours tout le temps processeur inactif.
Références:
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