Puis-je limiter l'utilisation du processeur d'une seule application?

Réponses:

16

Tout comme une alternative à cpulimit:

Vous pouvez démarrer clamscan avec la commande nice, par exemple

nice -n 19 clamscan.

Voir man nicepour plus de détails.

Cela ne limite PAS le CPU, mais cela diminue la priorité du processus.

Il faut également renicemodifier la priorité des processus en cours d'exécution.

Clausi
la source
2
Il semble que cela fonctionne toujours en mangeant beaucoup de CPU ...
Pitto
4
Tant qu'aucun autre processus ne nécessite de cputime, clamscan en obtient beaucoup. Mais dès qu'un autre processus (qui a une priorité plus élevée) a besoin de cputime, clamscan n'a aucune chance. cpulimit limite le cputime absolu et nice limite le cputime relatif.
Clausi
2
+1. niceing est la façon traditionnelle de procéder, et pour cause.
loevborg
Existe-t-il des outils pour définir une valeur agréable par défaut pour des applications particulières avec lesquelles exécuter? De préférence, un outil qui vous permet de comparer tous vos presets côte à côte.
Jonny Asmar
19

Installer cpulimit

sudo apt-get install cpulimit

Il propose différentes méthodes pour limiter l'utilisation du processeur d'un processus, fooà savoir 20%

  • Par son processus nom: sudo cpulimit -e foo -l 20.

  • Par son nom de chemin absolu: sudo cpulimit -P /usr/bin/foo -l 20

  • Par son PID:

    1. Trouver le PID du processus: pidof foo. (disons, il produit 1881)
    2. sudo cpulimit -p 1881 -l 20
Sid
la source
Aucun processus cible trouvé ... Peut-être est-ce parce que j'ai un script pour exécuter clamscan? je fais: sudo cpulimit -e /etc/cron.hourly/virusscan -l 15
Pitto
@Pitto: Vous avez entré une mauvaise commande, ce /etc/cron.hourly/virusscann'est pas un processus. Si vous devez limiter clamscan, exécutez sudo cpulimit -e clamscan -l 15.
Sid
Oh! Droite! Je devrais donc démarrer cpulimit au démarrage dans rc.local, non?
Pitto
2
sudon'est pas requis, le processus n'est pas un processus système. Juste comme une note
Anwar
Ce serait une solution vraiment intéressante si elle était utilisée par programmation! Prend-il en charge les recherches basées sur des modèles?
Jonny Asmar
4

Cela allait être un commentaire sur la réponse de Clausi (qui, je pense, est la plus "correcte" du point de vue de l'administration du système, à mon avis), mais elle s'est transformée en quelque chose de trop grand pour tenir dans la zone de commentaire.

  • Clamscan a une quantité de travail fixe à faire, donc le limiter à une certaine vitesse signifie que cela va juste prendre plus de temps. Cela va tenir le processeur en conflit plus longtemps.

  • Le laisser fonctionner aussi vite que possible signifie que vous utilisez votre processeur au maximum. Le rendre très "agréable" signifie qu'il laissera les autres processus faire leur travail avant le sien. Cela signifie que s'il y a beaucoup d'autres processus occupés, oui, cela prendra beaucoup de temps pour faire son propre travail mais s'il n'y a rien là-dedans, il ne fera que couper sa charge de travail.

Oli
la source
3

Si vous exécutez clamd avec systemd, vous pouvez utiliser l' CPUQuotaoption.

Modifiez /lib/systemd/system/clamav-daemon.servicepour inclure cette ligne dans la [Service]section:

CPUQuota=20%

Redémarrez ensuite le service

sudo systemctl daemon-reload
sudo systemctl reload-or-restart clamav-daemon
Keith
la source