J'ai un serveur de développement sur lequel sshd
cesse parfois de fonctionner car la machine manque de RAM. Oui, nous manquons de mémoire et la mise à niveau n'est pas un choix possible pour le moment. Ce que je veux faire, c'est dire à la machine: "Faites ce que vous voulez, mais laissez de côté 20 Mo et du CPU sshd
!".
Comment cela peut-il être fait?
performance
limit
phunehehe
la source
la source
sshd
se comporte bien, je pense qu'il serait bloqué s'il n'y avait pas assez de CPU / RAM à utiliser, n'est-ce pas?Réponses:
Vous pouvez probablement réaliser quelque chose comme ça en utilisant des groupes de contrôle avec le contrôleur de ressources mémoire .
Je suppose que vous mettriez toutes vos tâches consommatrices de ressources dans un nombre limité (CPU et RAM)
cgroup
, et que vous laisseriezsshd
"à l'extérieur" afin qu'il ne soit pas restreint.(L'ajout de plus de swap, même sous la forme d'un fichier de swap, peut être une bonne option cependant.)
la source
Oh mais les cgroups sont faciles :) Installez le paquet libcgroup. Créez un /etc/cgconfig.conf:
Démarrez le
cgconfig
processus qui créera la hiérarchie, les groupes de contrôle et définira les limites. Si cela réussit, vous avez deux groupes de contrôle, qui ont tous deux 50% du processeur alloué et 1 Go de mémoire disponible (je ne sais pas quelle est votre quantité réelle de mémoire disponible; en supposant que ce soit 2 Go dans cet exemple). Maintenant, il vous suffit de déplacer toutes les tâches (c'est-à-dire tous les processus en cours d'exécution sur le système) du groupe racine vers le groupe de contrôle nosshd:Ensuite, il vous suffit d'obtenir le PID du
sshd
processus et de le déplacer dans le fichier de tâches sshd:Ta-da, vous avez terminé. Vous pouvez maintenant être assuré que sshd aura toujours 50% du CPU et 1G de mémoire.
la source
Utilisez
renice
pour obtenir une priorité plus élevéesshd
ou vérifier la comptabilité. (acct) -> avec cela, vous pouvez définir des ressources pour les utilisateurs, exécutez donc sshd avec sla source
ionice
à cela aussi, et commencerais probablement sshd avec nice sans le retravailler plus tard.Une solution plus générale au problème de l'utilisation des ressources d'application consiste à exécuter vos applications dans un conteneur à l'aide de Docker . Vous pouvez ensuite exécuter des conteneurs avec des limites d'utilisation du processeur et de la mémoire similaires à cgroups.
la source