To nice
polecenie pozwala dostosować priorytet planowania („bezpieczeństwo”) programu. We wszystkich używanych przeze mnie systemach uniksowych niceness jest określona przez zakres liczb całkowitych, gdzie -20 jest najkorzystniejszym priorytetem planowania, 0 jest domyślnym, a 19 jest najmniej korzystnym.
Posiadanie 0 jako domyślnej wartości jest wystarczająco intuicyjne, ale dlaczego -20 i 19 zostały wybrane jako punkty końcowe zakresu? Dlaczego nie -128 i 127, które dokładnie pasowałyby do podpisanego bajtu 8-bitowego? Albo dlaczego nie -100 do 100, co jest bardziej intuicyjne dla ludzi o dziesiętnych umysłach, lub podobnie, ale nieco bardziej ergonomicznie, od -99 do 99? Czy zakres od -20 do 19 został wybrany arbitralnie, czy też ma jakiś związek z wewnętrznymi elementami harmonogramu, z którymi nice
pierwotnie współpracował? (Rozumiem, że dzisiaj nie ma takiej relacji, przynajmniej w przypadku Linuksa, którego harmonogram używa priorytetów w zakresie od 0 do 139. Interesują mnie jednak historyczne przyczyny zakresu od -20 do 19).
źródło
min(127, (recent CPU usage on a scale of 0 to 15) + 50 + pp->p_nice - 20
), a priorytety <25 były zarezerwowane dla procesy wykonujące nieprzerwane rzeczy. Więc uprzejmość musiała być swego rodzaju ograniczonym zasięgiem.Odpowiedzi:
Wewnętrzne poziomy głośności wynoszą 0–39, ale przyrosty są dodatnie lub ujemne. Źródło . Odpowiedź brzmi więc, że liczby (dodatnie i ujemne) akceptowane przez to
nice
polecenie prowadzą od 20, domyślnego poziomu, do dowolnego miejsca w zakresie 0–39.Dlaczego więc 0-39? Konkretny zakres był tym, co działało w pierwotnej implementacji projektantów. Powodem, dla którego bardziej pozytywne wartości są ładniejsze, jest to, że miły poziom jest dodawany do ostatniego użycia procesora w procesie określania priorytetu. Aby zapewnić przybliżone szeregowanie w trybie round-robin, jądro śledzi, ile procesora ostatnio spalił każdy proces i przełącza się na procesy, które nie miały tak dużo. Im wyższy przyjemny poziom, tym więcej czasu procesorowi wydaje się mieć proces i tym częściej program planujący uśpi ten proces lub go uśpi. Patrz : Projektowanie systemu operacyjnego UNIX , Maurice J. Bach, Prentice-Hall 1986, sec. 8.1 (8.1.4 dla specyficzności). ISBN 0-13-201799-7.
źródło
Mylisz się: jeśli korzystasz z systemu UNIX, w którym interfejs nice () ma sens,
NZERO
to domyślna wartość nice iNZERO is 20
.Żeby było bardziej oczywiste: zapytałeś o polecenie
nice
i jednocześnie wspominałeś o poziomach bezwzględnych, ale ładne polecenie nie zarządza wartościami bezwzględnymi, ale raczej przyrostami w stosunku do bieżącego poziomu. W przypadku stanu domyślnego niezły poziomNZERO
to 20.Ładne wartości to 0..2 * NZERO-1 lub 0..39
Zauważ, że chociaż domyślny program planujący UNIX może nadal być w stanie zrobić coś użytecznego z niezłą wartością, nie ma znaczenia, jeśli używasz specjalistycznego programu planującego, np. Programu planującego w czasie rzeczywistym.
źródło
nice
polecenia powłoki.