W celu szybkiego testu porównawczego, w jaki sposób można połączyć ładność i jonowość w celu uzyskania maksymalnego efektu, tj. Aby polecenie wykorzystywało możliwie jak najmniej zasobów (bez pracy na biegu jałowym)?
(Wydaje mi się, że jest to coś w rodzaju „nice -n 19 ionice -c 2 [polecenie], ale nie jestem pewien co do„ -n ”(classdata param) ionice, strona podręcznika jest tajemnicza pod względem znaczenia).
performance
nice
ionice
mahemoff
źródło
źródło
Odpowiedzi:
Pełne polecenie, które chcesz:
chrt
Polecenia na początku przełączy rzeczy do klasy szeregowania partii, co jest równoznaczne z dodaniem 0,5 do miłej wartości. Opcja -n dla ionice jest prostym priorytetem dla opcji czasu rzeczywistego (-c 1
) i best-effort (-c 2
), przy czym niższe wartości są wyższym priorytetem, podobnie jak wartości ładne (ale w zakresie 0-7). Jednak polecenie ionice nie jest absolutnie konieczne, ponieważ klasa i priorytet planowania we / wy są domyślnie wyprowadzane z parametrów planowania procesora inice -n 19
implikująionice -c 2 -n 7
.Można jednak uzyskać absolutnie minimalne zużycie zasobów, ustawiając zarówno CPU, jak i klasy planowania we / wy na bezczynne. W obu przypadkach „bezczynne” harmonogramy nie są tak naprawdę bezczynnymi, a Ty nadal będziesz mógł korzystać z zasobów, po prostu wszystko będzie miało wyższy priorytet.
W przypadku klasy planowania procesora korzysta to również z
chrt
polecenia, choć bez potrzebynice
(priorytet musi być ustawiony0
na bezczynną klasę planowania) i wygląda następująco:nice
Komenda na lustrach Linux wersji SVR4, co oznacza, że nie można zmienić klasę planowania, tylko piękny wartość (która również zachowuje się inaczej niż na klasycznej Linux UNIX, ale to trochę OT). Jako oryginalne alternatywne zajęcia harmonogramów były realtime POSIX.1ESCHED_RR
iSCHED_FIFO
polecenie, aby ustawić klas planowania skończyło się to nazywachrt
. Do-i
opcja określa użycieSCHED_IDLE
klasy planowaniaW przypadku klasy planowania we / wy używasz
ionice
. Dokładne polecenie wygląda następująco:Ta
-c
opcja określa, jakiej klasy planowania użyć, a 3 oznacza liczbę bezczynnych klas. Należy pamiętać, że w zależności od używanego harmonogramu we / wy bloków może to nie mieć żadnego wpływu. W szczególności programnoop
planujący we / wy w ogóle nie obsługuje priorytetów ani klas planowania, i jestem prawie pewien, żedeadline
programy planujące (zarówno starsze, jak i blk-mq) też nie.Jeśli chcesz to zrobić programowo, albo dla własnego programu, albo w celu dostosowania do innych procesów, sprawdź strony podręcznika dla wywołań
sched_setscheduler
iioprio_set
wywołań systemowych (chociaż oba są warte przeczytania, jeśli tylko chcesz więcej tła).źródło
Zakładając, że nie chcesz, aby to polecenie całkowicie czekało na zakończenie przez innych, aby nie doszło do głodu zasobów , wiersz powinien wyglądać następująco:
Ponieważ ionice będą ustawione proporcjonalnie na nowoczesnych jądrach Linuksa.
Nawiasem mówiąc
chrt -b0
, nie ma to nic wspólnego z uprzejmością, ale z tym, jak często procesor przeskakuje z jednego procesu do drugiego. Ta linia wydłuża ten czas, aby programy wsadowe mogły lepiej wykorzystywać pamięć podręczną, ale w przypadku innych poleceń jest to bezużyteczne. Jak widać tutaj .źródło