Jak ustawić priorytety procesów z ładnym i renice w systemie Linux

Polecenia nice i renice pozwalają dostroić sposób, w jaki jądro traktuje procesy, dostosowując ich priorytety. Przeczytaj ten samouczek, aby dowiedzieć się, jak ich używać w systemach operacyjnych Linux i Unix-podobnych, takich jak macOS.

Wszystko zależy od procesu

Wewnątrz komputera z systemem Linux lub Unix będzie działać wiele procesów, zanim jeszcze uruchomisz aplikację, której chcesz użyć. Większość tych procesów to istotne elementy samego Linuksa lub procesy wspierające środowisko graficzne. Za kulisami dużo się dzieje. Oczywiście istnieje tylko tyle zasobów systemowych i czasu procesora do obejścia. Jądro Linuksa jest kontrolerem dla wszystkich tych procesów.

To jądro musi zdecydować, które procesy wymagają teraz uwagi i zasobów, a które muszą czekać. Jądro nieustannie żongluje procesami i priorytetami, aby upewnić się, że komputer działa tak płynnie, jak to tylko możliwe, a wszystkie procesy otrzymują odpowiedni udział. Niektóre procesy są traktowane preferencyjnie. Są tak ważne dla ogólnego działania komputera, że ​​ich potrzeby muszą być na pierwszym miejscu, na przykład przed przeglądarką.

Miła wartość

Jednym z kryteriów używanych do określenia, jak jądro traktuje proces, jest wartość miła. Każdy proces ma niezłą wartość. Wartość nice to liczba całkowita z zakresu od -19 do 20. Wszystkie standardowe procesy są uruchamiane z ładną wartością zero.

Sztuczka polega na tym, że im wyższa wartość nice, tym przyjemniejszy jest twój proces dla innych procesów. Innymi słowy, wysoka miła wartość mówi jądru, że ten proces z przyjemnością czeka. Liczba ujemna jest przeciwieństwem bycia miłym. Im większa ujemna wartość miła, tym bardziej samolubny jest ten proces. Próbuje uzyskać jak najwięcej czasu procesora, nie zwracając uwagi na inne procesy.

Możemy użyć polecenia nice, aby ustawić wartość nice, gdy a proces jest uruchomiony i możemy użyć renice do dostosowania wartości nice działającego procesu.

Niezłe polecenie

Możemy użyć polecenia nice, aby dostosować wartość nice programu podczas jego uruchamiania. Pozwala nam to zwiększyć lub zmniejszyć priorytet nadany procesowi przez jądro w stosunku do innych procesów.

Załóżmy, że programista napisał program o nazwie Ackermann. To oblicza Funkcje Ackermana. Obciąża procesor i pamięć. Programista może uruchomić program za pomocą następującego polecenia:

./ackermann

komenda Ackermann w oknie terminala

Możemy użyć górnego polecenia, aby wyświetlić uruchomiony program.

top

top działa w terminalu

Szczegóły programu Ackermann możemy zobaczyć u góry. Fajną wartością jest liczba w „kolumnie NI”. Ustawił się na zero, tak jak oczekiwaliśmy.

Zrestartujmy go i tym razem uczyńmy go mniej wymagającym. Ustawimy ładną wartość 15 dla programu Ackermann w następujący sposób. Wpisz nice, spację, -15, kolejną spację, a następnie nazwę programu, który chcesz uruchomić. W naszym przykładzie nasz fikcyjny programista używa ./ackermann.

nice -15 ./ackermann

ładne polecenie 15 w oknie terminala

Zwróć uwagę, że „-15” nie oznacza minus piętnastki. Jest pozytywna piętnaście. Znak „-” jest wymagany, aby powiedzieć mi, że przekazujemy parametr. Aby wskazać liczbę ujemną, należy wpisać dwa znaki „-”.

Jeśli teraz zaczniemy od nowa, zobaczymy zmianę w zachowaniu Ackermanna.

top

top działa w terminalu

Przy niezłej wartości 15, Ackermann nie zużywa najwięcej czasu procesora. GNOME i Rhythmbox używają więcej. Za chwilę powstrzymaliśmy Ackermanna.

Teraz zróbmy odwrotnie i daj ACKermannowi ujemną ładną wartość. Zwróć uwagę na użycie dwóch znaków „-”. Aby aplikacja była bardziej samolubna i mniej przyjemna, musisz użyć sudo. Każdy może uczynić swoją aplikację przyjemniejszą, ale tylko superużytkownicy mogą uczynić jedną bardziej samolubną.

sudo nice --10 ./ackermann

fajne polecenie -10 w oknie terminala

Biegnijmy na szczyt i zobaczmy, jaka to różnica.

top

top działa w terminalu

Tym razem Ackermann ma niezłą wartość -10. Wraca na szczyt i zużywa więcej czasu procesora niż wcześniej.

Komenda renice

Polecenie renice pozwala nam dostosować wartość nice działającego procesu. Nie musimy go zatrzymywać i ponownie uruchamiać z miłym. Możemy wyznaczyć nową wartość w locie.

Polecenie renice przyjmuje identyfikator procesu lub PID procesu jako parametr wiersza poleceń. Możemy albo wyodrębnić identyfikator procesu z kolumny „PID” u góry, albo możemy użyć ps i grep, aby go znaleźć, w następujący sposób. Oczywiście zamiast słowa dave wpisz nazwę użytkownika i nazwę procesu, który Cię interesuje.

ps -eu dave | grep ackermann

ps przesłał przez grep w oknie terminala

Teraz, gdy mamy PID, możemy go użyć z renice. Przywrócimy Ackermann do przyjemniejszego zachowania z niezłą wartością pięć. Aby zmienić wartość nice dla uruchomionego procesu, musisz użyć sudo. Zauważ, że w parametrze 5 nie ma „-”. Nie potrzebujesz jednego dla liczb dodatnich i potrzebujesz tylko jednego, a nie dwóch, dla liczb ujemnych.

sudo renice -n 5 2339

renice polecenie działające w oknie terminala

Otrzymujemy potwierdzenie, że renice zmienił wartość nice. Pokazuje nam starą wartość i nową wartość.

Jądro zwykle świetnie radzi sobie z obsługą priorytetów i przydzielaniem czasu procesora i zasobów systemowych. Ale jeśli masz do wykonania długie zadanie wymagające dużej mocy obliczeniowej i nie obchodzi cię, kiedy się zakończy, komputer będzie działał nieco płynniej, jeśli ustawisz wyższą wartość nice dla tego zadania. To będzie przyjemniejsze dla każdego.