Według strony man i wikipedia; nice
wynosi od -20 do 20.
Jednak po uruchomieniu następującego polecenia stwierdzam, że niektóre procesy mają wartości nienumeryczne, takie jak (-). Zobacz szóstą kolumnę od lewej z tytułem „NI”.
Co wskazuje na uprzejmość (-)?
ps axl
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
4 0 1 0 20 0 19356 1548 poll_s Ss ? 0:00 /sbin/init
1 0 2 0 20 0 0 0 kthrea S ? 0:00 [kthreadd]
1 0 3 2 -100 - 0 0 migrat S ? 0:03 [migration/0]
1 0 4 2 20 0 0 0 ksofti S ? 0:51 [ksoftirqd/0]
1 0 5 2 -100 - 0 0 cpu_st S ? 0:00 [migration/0]
5 0 6 2 -100 - 0 0 watchd S ? 0:09 [watchdog/0]
1 0 7 2 -100 - 0 0 migrat S ? 0:08 [migration/1]
1 0 8 2 -100 - 0 0 cpu_st S ? 0:00 [migration/1]
1 0 9 2 20 0 0 0 ksofti S ? 1:03 [ksoftirqd/1]
5 0 10 2 -100 - 0 0 watchd S ? 0:09 [watchdog/1]
1 0 11 2 -100 - 0 0 migrat S ? 0:05 [migration/2]
Sprawdziłem 3 serwery: Ubuntu 12.04 i CentOs 6.5 oraz Mac OsX 10.9. Tylko maszyny Ubuntu i CentOs mają niecyfrowe wartości liczbowe.
[brackets]
rzeczywistości, tokthread
s (wątki jądra).Odpowiedzi:
Zauważ, że te mają również wynik PRI -100; oznacza to, że proces jest zaplanowany jako proces w czasie rzeczywistym . Procesy w czasie rzeczywistym nie wykorzystują dobrych wyników i zawsze mają wyższy priorytet niż normalne, ale nadal różnią się między sobą.
Możesz wyświetlić szczegóły według procesu za pomocą
chrt
polecenia (npchrt -p 3
.). Jeden z twoich -100 najprawdopodobniej zgłosi „bieżący priorytet planowania” wynoszący 99 - w przeciwieństwie do tegonice
, wysokie wartości mają wyższy priorytet, z którego prawdopodobnie najwyższy-100
numer utworzył . Procesy nie działające w czasie rzeczywistym zawsze będą miały „bieżący priorytet planowania” równy 0,chrt
niezależnie od niezłej wartości, a pod linuksem „bieżąca polityka planowania”SCHED_OTHER
.Niektóre wersje
top
wydają się zgłosić z procesów w czasie rzeczywistymrt
pod PRI a następnie0
pod NI .źródło
-100
ale nie mogłem tego zrozumieć :)Odpowiedź Goldlilocka skłoniła mnie do przeprowadzenia badań właściwą ścieżką. To są szczegóły moich badań.
Algorytmy planowania dostępne dla procesów
Linux obsługuje 3 zasady planowania.
SCHED_FIFO
,SCHED_RR
iSCHED_OTHER
.SCHED_OTHER
jest domyślną uniwersalną polityką harmonogramu współdzielenia czasu stosowaną przez większość procesów;SCHED_FIFO
iSCHED_RR
są przeznaczone do specjalnych aplikacji o krytycznym czasie, wymagających precyzyjnej kontroli nad sposobem wybierania uruchomionych procesów do wykonania.Dostępne priorytety
Aby wybrać proces do uruchomienia, program planujący Linux musi wziąć pod uwagę priorytet każdego procesu. W rzeczywistości istnieją dwa rodzaje priorytetów.
Statyczny priorytet wartość jest przypisany do każdego procesu planowania i zależy od tego priorytetu statycznego. Zaplanowane procesy
SCHED_OTHER
mają priorytet statyczny 0; procesy zaplanowane poniżejSCHED_FIFO
lubSCHED_RR
mogą mieć statyczny priorytet w zakresie1
od99
(99 jest najwyższym).Procedura
sys_sched_get_priority_max( )
zwraca statyczny priorytet procesu, zwraca0
dla procesów nie działających w czasie rzeczywistym.Dynamiczny priorytet stosowany jest w aplikacjach nie działających w czasie rzeczywistym.
Wszystkie procesy w czasie rzeczywistym mają wyższy priorytet niż zwykłe procesy. Linux implementuje priorytety w czasie rzeczywistym zgodnie z POSIX. Poniższy wykres może dać przegląd sposobu planowania procesów z ich priorytetami.
Teraz możemy wydać poniższe polecenie, aby sprawdzić priorytet procesu w czasie rzeczywistym. Tutaj używam watchdoga, ponieważ miał dobrą wartość wymienioną jako -.
To jest wynik powyższego polecenia. Jak widzimy, priorytetem w czasie rzeczywistym jest 99, co jest najwyższym możliwym priorytetem.
Tak więc, zgodnie z moim zrozumieniem, priorytet w czasie rzeczywistym może przyjąć maksymalną wartość 99, więc nie może być nad nim żadnej ładnej wartości. Z tego powodu otrzymujemy niezłą wydajność - jako watchdog i inne procesy systemowe.
Bibliografia
http://oreilly.com/catalog/linuxkernel/chapter/ch10.html http://atipaday.wordpress.com/2008/08/19/atad-21-linux-process-priority-range/
źródło