Quelle que soit la vitesse de votre machine Linux, il y aura toujours des tâches qui consomment beaucoup de temps CPU. Tout, de l’encodage vidéo à l’exécution de modèles mathématiques, peut entraîner une exécution du processeur à 100 %. C’est très bien si la machine ne fait rien d’autre. Mais s’il s’agit de votre bureau principal ou s’il est utilisé comme serveur, alors exécuter une tâche qui maximise votre CPU rendra la machine lente et difficile à utiliser. La beauté d’un système d’exploitation multitâche est que la machine ne se bloque pas car elle programmera toujours le temps CPU pour d’autres tâches et des choses comme le bureau fonctionneront toujours, mais beaucoup plus lentement. Le planificateur n’a aucun moyen de savoir que vous souhaitez que la tâche gourmande en CPU s’exécute avec une priorité inférieure ou pour limiter son temps CPU. Cependant, certains outils peuvent être utilisés pour contrôler l’utilisation du processeur pour ces tâches gourmandes en ressources.
Pour émuler une tâche gourmande en CPU, nous pouvons utiliser un outil appelé matho-prime qui génère une liste de nombres premiers. Si vous lui demandez de générer une liste suffisamment longue, le processeur sera au maximum pendant qu’il fonctionne. Pour installer matho-prime sur Ubuntu ou sur un Raspberry Pi utilisez :
Commençons simplement la tâche et voyons l’utilisation du processeur :
Cela dit aux matho-premiers de générer une liste de nombres premiers de zéro à neuf milliards neuf cent quatre-vingt-dix-neuf millions neuf cent quatre-vingt-dix-neuf mille neuf cent quatre-vingt-dix-neuf ! La sortie est redirigée vers le fichier p.txt. L’esperluette à la fin indique au shell d’exécuter le programme en arrière-plan, ce qui signifie que vous revenez à l’invite de commande juste après le démarrage de la tâche.
Exécutez maintenant la commande top et notez la quantité de CPU utilisée par le générateur de nombres premiers.
Maintenant, tuons cette tâche et voyons comment la lancer avec une priorité inférieure. Quittez top en appuyant sur q, puis tapez fg pour amener les matho-primes au premier plan, puis appuyez sur « Ctrl + C » pour forcer la sortie du programme.
Maintenant, relancez le programme mais au début de la commande ajoutez le mot nice :
nice est un outil qui indique à Linux de planifier cette tâche avec une priorité inférieure. La gentillesse va de -20 (horaire le plus favorable) à 19 (moins favorable). Par défaut, nice planifiera la tâche avec une gentillesse de 10. Par défaut, les tâches normales sont démarrées avec une gentillesse de zéro. Cela signifie qu’une tâche avec une gentillesse de 10 sera considérée comme ayant une priorité inférieure et se verra attribuer moins souvent des ressources CPU.
Nous pouvons maintenant démarrer un deuxième de ces générateurs de nombres premiers pour émuler d’autres tâches que vous souhaitez effectuer sur votre machine (comme naviguer sur le Web ou écrire un document). Celui-ci aura une gentillesse normale car l’utilisation du bureau devrait être une priorité plus importante que l’exécution du générateur de nombres premiers.
Notez que la sortie de ce fichier est redirigée vers p2.txt. La sortie du haut ressemblera à quelque chose comme ceci :
Comme vous pouvez le voir, le processus avec la plus grande gentillesse reçoit moins de temps CPU. Cela signifie que si vous lancez une tâche gourmande en CPU avec nice, cela ne rendra pas votre machine léthargique ou ne la fera pas répondre lentement.
Contenu
cpulimit
Il existe une autre commande appelée « cpulimit » qui, plutôt que de modifier la priorité de planification, interrompt temporairement un processus pour s’assurer qu’il ne dépasse pas l’utilisation du processeur souhaitée.
Pour l’installer tapez :
Maintenant, exécutez à nouveau le générateur de nombres premiers gourmands en CPU et notez son numéro PID à l’aide de cette commande :
La première colonne de la sortie est le PID. Limitez maintenant l’utilisation du processeur de ce processus comme ceci :
Où 16299 est le PID du processus matho-primes. Un regard avec le dessus montrera quelque chose comme ceci :
Aller plus loin
Il existe une commande associée à nice appelée renice qui changera la gentillesse d’un processus existant. Essayez d’utiliser top ou ps avec grep pour obtenir le PID d’un processus et utilisez renice +19 16299 pour définir la priorité la plus basse possible (où 16299 est le PID du processus).
N’hésitez pas à ajouter dans la discussion dans le commentaire ci-dessous.
Cet article est-il utile ? Oui Non