Il existe de nombreuses questions similaires, mais aucune ne m'aide à résoudre mon problème.
J'ai Ubuntu 11.10 sur le serveur (c'est la version de bureau). J'ai un site Web en cours d'exécution dessus. Il y a un processus qui est très important, mais qui n'a pas besoin d'être exécuté en haute priorité. Je veux limiter définitivement l'utilisation du processeur pour le processus , pas pour l'utilisateur. Ce processus est exécuté par la fonction exec (c'est la fonction php, pas le processus système).
Je vois donc 2 options: 1. Ajoutez une sorte de limite chaque fois que la fonction est exécutée. 2. Limitez définitivement l'utilisation du processeur pour ce processus.
J'ai essayé d'utiliser "nice" et cpulimit, mais rien ne semble fonctionner. Nice n'a aucun effet et cpulimit (avec -e) dit: "aucun processus cible trouvé".
Je suis un débutant, alors supposez que je ne sais presque rien.
cgsnapshot -s
pour récupérer les informations sans écrire le fichier de configuration manuellement, ce dernier n'est pas recommandé.Réponses:
En l'absence de détails demandés ...
Voici comment j'utilise cgroups sur ubuntu.
Tout au long de cette publication, vous devrez remplacer la variable "$ USER" par l'utilisateur exécutant le processus
J'ai ajouté des informations sur la mémoire et cela va être une FAQ, si vous n'en avez pas besoin, ne l'utilisez pas.
1) Installer
cgroup-bin
2) Redémarrez. cgroups est maintenant situé à
/sys/fs/cgroup
3) Créez un groupe de contrôle pour votre utilisateur (le propriétaire du processus)
4) Votre utilisateur peut gérer les ressources. Par défaut, les utilisateurs obtiennent 1024 unités de CPU (partages), donc pour limiter à environ 10% de CPU, la mémoire est en octets ...
5) Démarrez votre processus (changez exec en cgexec)
Configuration
En supposant que les groupes de discussion fonctionnent pour vous;)
Modifier
/etc/cgconfig.conf
, ajouter votre groupe de contrôle personnaliséAjoutez votre groupe de contrôle. Remplacez à nouveau $ USER par le nom d'utilisateur propriétaire du processus.
Vous pouvez également spécifier des groupes
gid=$GROUP
, /etc/cgconfig.conf est bien commenté.Maintenant, exécutez à nouveau votre processus avec
cgexec -g cpu:$USER command <options>
Vous pouvez voir votre processus (par PID) dans
/sys/fs/cgroup/cpu/$USER/tasks
Exemple
Pour plus d'informations, voir: http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Resource_Management_Guide/
la source