Czy mogę ograniczyć użycie procesora przez pojedynczą aplikację?

Odpowiedzi:

16

Jako alternatywa dla cpulimit:

Możesz rozpocząć clamscan za pomocą polecenia-nice, np

nice -n 19 clamscan.

Zobacz man niceszczegóły.

Robi NIE ograniczyć CPU, ale ma niższy priorytet procesu.

Istnieje również renicezmiana priorytetu uruchomionych procesów.

Clausi
źródło
2
Wygląda na to, że nadal działa, jedząc dużo procesorów ...
Pitto,
4
Tak długo, jak żaden inny proces nie wymaga cputime, clamscan dostaje go dużo. Ale gdy tylko inny proces (który ma wyższy priorytet) potrzebuje czasu, clamscan nie ma szans. cpulimit ogranicza absolutny czas przesyłania, a miły ogranicza względny czas przesyłania.
Clausi
2
+1. niceing jest tradycyjną drogą i nie bez powodu.
loevborg 11.01.11
Czy są jakieś narzędzia do zdefiniowania domyślnej wartości Nicei dla określonych aplikacji do działania? Najlepiej narzędzie, które pozwala porównać wszystkie ustawienia wstępne obok siebie.
Jonny Asmar,
19

Zainstaluj cpulimit

sudo apt-get install cpulimit

Zapewnia różne metody ograniczania wykorzystania procesora przez proces, fooaby powiedzieć, 20%

  • Przez jego nazwa-procesu: sudo cpulimit -e foo -l 20.

  • Według bezwzględnej nazwy ścieżki: sudo cpulimit -P /usr/bin/foo -l 20

  • Według jego PID:

    1. Znajdź PID procesu: pidof foo. (powiedzmy, daje 1881)
    2. sudo cpulimit -p 1881 -l 20
Sid
źródło
Nie znaleziono procesu docelowego ... Może to dlatego, że mam skrypt do uruchamiania Clamscan? i do: sudo cpulimit -e /etc/cron.hourly/virusscan -l 15
Pitto
@Pitto: Podałeś nieprawidłowe polecenie, /etc/cron.hourly/virusscanto nie jest proces. Jeśli chcesz ograniczyć clamscan, uruchom sudo cpulimit -e clamscan -l 15.
Sid
O! Dobrze! Więc powinienem uruchomić cpulimit przy starcie w rc.local, prawda?
Pitto,
2
sudonie jest wymagany proces nie jest procesem systemowym. Dla przypomnienia
Anwar
To byłoby naprawdę fajne rozwiązanie, gdyby było używane programowo! Czy obsługuje wyszukiwanie oparte na wzorcach?
Jonny Asmar,
4

To miał być komentarz do odpowiedzi Clausi (które moim zdaniem jest najbardziej „poprawne” z punktu widzenia administracji systemu, ale moim zdaniem przerodziło się w coś zbyt dużego, by zmieściło się w polu komentarza).

  • Clamscan ma określoną ilość pracy, więc ograniczenie go do określonej prędkości oznacza, że ​​po prostu potrwa dłużej. Dłużej utrzyma procesor w rywalizacji.

  • Pozwól mu działać tak szybko, jak to możliwe, co oznacza, że ​​używasz swojego procesora w pełni. Uczynienie go bardzo „ładnym” oznacza, że ​​pozwoli innym procesom wykonać swoją pracę przed własną. Oznacza to, że jeśli istnieje wiele innych zajętych procesów, tak, wykonanie własnej pracy zajmie dużo czasu, ale jeśli nic tam nie będzie, po prostu poradzi sobie z obciążeniem.

Oli
źródło
3

Jeśli używasz clamd z systememd, możesz skorzystać z tej CPUQuotaopcji.

Edytuj, /lib/systemd/system/clamav-daemon.serviceaby uwzględnić ten wiersz w [Service]sekcji:

CPUQuota=20%

Następnie uruchom ponownie usługę

sudo systemctl daemon-reload
sudo systemctl reload-or-restart clamav-daemon
Keith
źródło