Czy można ograniczyć moc procesora, jaką może zużyć proces?

16

Zastanawiam się, czy istnieje sposób, aby powiedzieć procesowi, ile mocy procesora może to zrobić?

Problem polega na tym, że konwertuję wideo za pomocą Aristy (konwertera wideo) i denerwuje mnie szalony wentylator, kiedy patrzę na monitor zadań, zajmuje on ponad 92% procesora.

Czy mogę (jakoś) powiedzieć, że może to zająć tylko 20%?

Dzięki

odpowiednik 8
źródło

Odpowiedzi:

20

Istnieje narzędzie cpulimit (jest również obecne w repozytorium debian i powinno znajdować się w innych dystrybucjach).

Jego użycie jest dość proste:

cpulimit -p PID -l MAX_CPU_LEVEL

Możesz także użyć nazwy procesu lub pełnej ścieżki do pliku binarnego. Szczegóły można znaleźć na stronie man .

wysypka
źródło
1
ha-ha :), działa idealnie, dzięki +1
odpowiednik8
3
Kod pod wskazanym adresem URL nie był aktualizowany od dłuższego czasu. Inna grupa go podniosła i kontynuowała rozwój na limitcpu.sf.net .
James Sneeringer,
7

Innym sposobem jest użycie (stosunkowo) nowego interfejsu jądra o nazwie cgroups (artykuł w Wikipedii tutaj ). Umożliwia bardziej precyzyjną kontrolę ilości procesora / pamięci / io / etc, które proces / użytkownik / grupa może zużyć.

Tommy
źródło
0

Chociaż może nie być to dokładnie to, czego szukasz, możesz użyć reniceprogramu, aby zmienić priorytet programu, aby zapobiec spowolnieniu innych aplikacji w systemie. renice -n 20 -p [pid], gdzie [pid] zostaje zastąpione identyfikatorem procesu Aristy, prawdopodobnie zmniejszyłoby to zużycie zasobów i zdecydowanie zmniejszyłoby spowolnienie systemu.

ponowna kuracja
źródło
1
OP nie narzeka na proces spowalniający inne aplikacje, ale na to, że wentylator działa jak szalony, renicenie może zrobić nic przeciwko temu ostatniemu. W najlepszym wypadku spowolni konwerter wideo, ale konkurencyjne procesy (jeśli w ogóle) utrzymają obciążenie procesora jak poprzednio.
jlliagre