Podczas działania top
widzę następujące (skrócone) przykładowe dane wyjściowe:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4586 ipc-adm+ 20 0 1303900 605152 92844 S 30,6 29,3 3:52.88 firefox
3985 ipc-adm+ 20 0 258588 124508 63072 S 12,2 6,0 0:40.04 compiz
3092 root 20 0 172392 56164 25980 S 6,1 2,7 0:30.13 Xorg
Są dwie wartości, którymi jestem zainteresowany: PR
(Priorytet) i NI
(Wolność).
Jeśli zrozumiałem to, co już odkryłem poprawnie, oboje określają, ile czasu procesora osiągnie proces w przeciwieństwie do innych procesów. Ale jaka jest różnica między tymi wartościami?
Czy możesz również opisać, jak manipulować tymi wartościami procesu i w jakich okolicznościach może to być przydatne?
źródło
niceness
mogą być użyte do nadania negatywnego priorytetu, aby zadanieniceness
zejdzie z drogi dla zadań o wysokim priorytecie? (tj. bycienice
i pozwalanie innym zasobom na dostęp? A może to mnie pomyliło?pr
20, więc równe, zadanie pierwsze ma wartośćni
0, a zadanie drugie ma wartośćni
20, więc oznaczałoby to, że zadanie drugie oddałoby zasoby dla zadania pierwszego, ponieważ jestnicer
Co to jest priorytet i dlaczego powinienem się tym przejmować?
Mówiąc o procesach, priorytetem jest zarządzanie czasem procesora. Procesor lub procesor jest jak człowiek żonglujący wieloma zadaniami jednocześnie. Czasami możemy mieć wystarczająco dużo miejsca na wiele projektów. Czasami możemy skupić się tylko na jednej rzeczy na raz. Innym razem pojawia się coś ważnego i chcemy poświęcić całą naszą energię na rozwiązanie tego problemu, jednocześnie nakładając mniej ważne zadania na tylny palnik.
W Linuksie możemy ustawić wytyczne dla procesora, który powinien podążać, gdy analizuje wszystkie zadania, które musi wykonać. Te wytyczne nazywa się uprzejmością lub niezłą wartością. Skala nicości Linuksa wynosi od -20 do 19. Im niższa liczba, tym większy priorytet otrzymuje zadanie. Jeśli wartość niceness jest wysoka, np. 19, zadanie zostanie ustawione na najniższy priorytet, a procesor przetworzy je, gdy tylko będzie taka szansa. Domyślna niezła wartość to zero.
Korzystając z tej skali, możemy lepiej alokować nasze zasoby procesora. Programy o niższym priorytecie, które nie są ważne, można ustawić na wyższą ładną wartość, natomiast programy o wysokim priorytecie, takie jak demony i usługi, można ustawić tak, aby bardziej skupiały się na procesorze. Możesz nawet przypisać konkretnemu użytkownikowi niższą wartość dla wszystkich jego procesów, aby ograniczyć jego zdolność do spowalniania podstawowych usług komputera.
Źródło
Ustaw priorytet nowych procesów za pomocą
nice
npdla istniejących procesów
Aby ustawić priorytet,
<0
którego potrzebujeszsudo
, np .:ale nie dla priorytetu
>=0
Przykład
Inny przykład
Aby ponownie uruchomić wszystkie uruchomione procesy dla określonego użytkownika
źródło
renice 10
działałoby to również bezsudo
, prawda? Czy możesz dodać przykład, aby uprościć wszystkie procesy konkretnego użytkownika? Byłoby to naprawdę przydatne, gdyby ktoś inny był zalogowany w tym samym czasie i miał uruchomione kilka niepotrzebnych, ale pochłaniających zasoby procesów (jak w przypadku wstrzymanej gry flash w Firefox, młodsi bracia robią takie rzeczy ...: - /)0
albo… jest problem;)ps
jest:PRI: 38, NI: -19
jednak, zetop
jestPR:1, NI -19
to dlaczego?Krótka odpowiedź
PR jest poziomem priorytetowym. Im niższy PR, tym wyższy będzie priorytet procesu.
PR oblicza się w następujący sposób:
Długa odpowiedź
Istnieją 2 rodzaje procesów, normalny i rzeczywisty. Dla normalnych (i tylko dla tych) nice stosuje się w następujący sposób:
Miły
Skala „dobroci” wynosi od -20 do 19, podczas gdy -20 jest najwyższym priorytetem, a 19 najniższym. Poziom priorytetu jest obliczany w następujący sposób:
PR = 20 + NI
Gdzie NI to niezły poziom, a PR to poziom priorytetowy. Jak widać, -20 faktycznie odwzorowuje na 0, a 19 na 39.
Domyślnie wartość nice programu wynosi 0, ale użytkownik root może uruchamiać programy o określonej wartości nice za pomocą następującego polecenia:
Czas rzeczywisty
Możemy pójść jeszcze dalej. Dobry priorytet jest faktycznie używany w programach użytkownika. Podczas gdy ogólny priorytet UNIX / LINUX ma zakres 140 wartości, ładna wartość umożliwia procesowi mapowania do ostatniej części zakresu (od 100 do 139). To równanie pozostawia wartości od 0 do 99 nieosiągalne, co odpowiada ujemnemu poziomowi PR (od -100 do -1). Aby mieć dostęp do tych wartości, proces należy określić jako „w czasie rzeczywistym”.
Istnieje 5 zasad planowania w środowisku LINUX, które można wyświetlić za pomocą następującego polecenia:
Który pokaże następującą listę:
Procesy szeregowania można podzielić na 2 grupy, normalne zasady szeregowania (od 1 do 3) i zasady szeregowania w czasie rzeczywistym (4 i 5). Procesy w czasie rzeczywistym zawsze będą miały pierwszeństwo przed normalnymi procesami. Proces w czasie rzeczywistym można wywołać za pomocą następującego polecenia (na przykład, jak zadeklarować zasadę SCHED_RR):
Aby uzyskać wartość PR dla procesu w czasie rzeczywistym, stosuje się następujące równanie:
PR = -1 - rt_prior
Gdzie rt_prior odpowiada priorytetowi między 1 a 99. Z tego powodu proces, który będzie miał wyższy priorytet niż inne procesy, będzie wywoływany z liczbą 99.
Należy zauważyć, że w procesach w czasie rzeczywistym wartość nice nie jest używana.
Aby zobaczyć bieżącą „wartość” i wartość PR procesu, można wykonać następujące polecenie:
Który pokazuje następujące dane wyjściowe:
Na rysunku wyświetlane są wartości PR i NI. Warto odnotować proces o wartości PR -51, która odpowiada wartości w czasie rzeczywistym. Istnieją również procesy, których wartość PR jest określona jako „rt”. Ta wartość faktycznie odpowiada wartości PR -100.
źródło