Kategorie | Linux, Poradniki, Programy

  

Jak kontrolować / limitować użycie procesora przez procesy

Opublikowano 31 maja 2010 przez Franek

Bardzo przydatny ficzer, szczególnie kiedy nasz CPU nie grzeszy wydajnością aby uruchamiamy jakąś mocno obciążającą procesor czynność taką jak konwersja wideo, czy kompilacja programów. Można jednak łatwo ograniczyć użycie czasu procesora dla danych aplikacji za pomocą cpulimit.

Instalacja:
sudo apt-get install cpulimit

Użycie:
Składnia:
cpulimit CEL/PROCES [OPCJE]

Cel/program/proces:
-p xxx
lub
--pid=xxx
Gdzie xxx to pid procesu, pid można łatwo sprawdzić poleceniem ps aux, np:
ps aux |grep nautilus
frk 1551 0.0 2.9 101028 38016 ? S May30 0:50 nautilus

Nautilus ma pid 1551 :]

-e xxx
lub
--exe=xxx
Gdzie xxx to nazwa procesu.

-P xxx
lub
--path=xxx
Gdzie xxx to absolutna ścieżka to wykonywalnego pliku.

Opcje:
-l x
lub
--limit=x
Gdzie x to dozwolone procentowe użycie czasu procesora, przedział 0-100 – jest to parametr obowiązkowy.

-v
lub
--verbose
Pokazuje statystyki kontroli.

-z
lub
--lazy
Wyjście, jeśli podany proces nie istnieje lub zostanie zabity.

-h
lub
--help
Wyświetla pomoc.

Przykłady:
Posłużę się procesem mpd i ustawię na niego limit użycia do 10% czasu procesora:
Sposób pierwszy, nazwa procesu:
cpulimit -e mpd -l 10
Sposób drugi, pid procesu:
cpulimit -p 31766 -l 10
Pid procesu uzyskałem wpisując:
ps aux | grep mpd
frk 31766 2.0 1.0 135352 14036 ? Ssl 03:51 14:41 mpd .mpd/mpd.conf

Sposób trzeci, ścieżka do pliku wykonywalnego:
cpulimit -P /usr/bin/mpd -l 10
Bezwzględną ścieżkę do pliku wykonywalnego mpd znalazłem wpisując:
whereis mpd
mpd: /usr/bin/mpd /etc/mpd.conf /usr/share/man/man1/mpd.1.gz

:]

cpulimit na sourceforge.net

  

5 Comments For This Post

  1. Blachovsky Says:

    tego szukałem znakomity artykuł .Wyśle zajaranym kolegom z osiedla ….

  2. Franek Says:

    masz jakieś problemy z samym sobą?

  3. Anonim Says:

    Ten proces służy do ograniczania procesów na stałe czy tylko przy jednym wykonaniu?

    Próbuję ograniczyć proces, ale jak bym nie próbował to działa to tak:
    1. Wpisuję cpulimit -e NazwaProcesu -l 10
    2. Enter
    3. Wyskakuje: no target process found

    Proces normalnie może być wykonany z linii komend poprzez wpisanie jego nazwy z podaniem parametrów.

    Wiesz może co robię źle? Mam ubuntu 11.10.

  4. Anonim Says:

    Próbowałem korzystać również z "nice" do ograniczenia procesu, ale nie dało żadnych efektów, tzn. procesy nadal dzielą się po równo.

    Jest to dla mnie o tyle ważne, że jest to serwer i chciałbym żeby jeden proces się wykonywał, ale w tle, ponieważ strona internetowa musi działać bez ścin. Może wiesz co będzie dla mnie najlepsze?

  5. Tygrysek Says:

    Uruchomienie komendy jak podałeś wyżej, bez uruchomionego procesu powoduje, że cpulimit oczekuje na pojawienie się takiego procesu i wtedy zacznie go kontrolować.
    "Warning: no target process found. Waiting for it…"
    Więc jeśli nazwa procesu jest zgodna z podaną w linii komend cpulimit działa "na stałe" dla tej konkretnej nazwy procesu.
    "CPUlimit version 2.0"
    Temat stary, ale niech jest w nim odpowiedź na pytanie, bo takich niedoróbek pełno w internecie.

Leave a Reply

Polityka komentarzy

     
     
Green Dog Says

MiniBlog