Jakie są, jeśli w ogóle, skutki priorytetów harmonogramu i zasad dla wątków w niezakończonym procesorze?


12

Mam system Linux, w którym użyliśmy cgroups do stworzenia dwóch wyłącznych cpu_wyłączników cpu, A i B, i gdzie przeprowadziliśmy migrację wszystkich wątków użytkownika i wszystkich niezwiązanych wątków jądra do grupy cg dołączonej do cpusetu A. Rzeczy działające w cpusecie A mają różne zasady harmonogramu i różne priorytety, a w procesorze A działa o wiele więcej wątków niż w rdzeniach w zestawie A.

Istnieje również niewielka liczba bardzo aktywnych procesów dołączonych do procesora B, w których całkowita liczba wątków użytkownika w tych procesach nigdy nie jest większa niż liczba rdzeni dostępnych wyłącznie w procesorze B. Celem jest ochrona tych ważnych zadań działających w procesorze B z innej aktywności na komputerze i w celu zminimalizowania opóźnień przetwarzania.

Czy w takim ustawieniu polityka / priorytet wątków szeregowania użytkownika uruchomionego w procesorze B ma jakiś zauważalny wpływ? Inaczej mówiąc: czy zmiana polityki szeregowania wątków procesora B z domyślnej SCHED_OTHER na SCHED_FIFO lub SCHED_RR miałaby jakieś konsekwencje, dobre czy złe?

Wydaje się, że odpowiedź powinna brzmieć „nie”, ponieważ program planujący powinien mieć możliwość przypisania każdego wątku działającego w zestawie B własnego dedykowanego rdzenia, więc nie byłoby nic do nadania priorytetu ani harmonogramu, a zatem polityka i względny priorytet B wątki procesora nie miałyby znaczenia. Z drugiej strony są zmartwione wątki jądra i aspekty „domeny harmonogramu”, o które należy się martwić, i prawdopodobnie inne rzeczy, których nie wziąłem pod uwagę.

Czy zasady harmonogramowania i priorytety wątków działających w nadmiażonej, wyłącznej jednostce centralnej mają jakiekolwiek znaczenie praktyczne?

Odpowiedzi:


4

Używany odcinek czasu będzie miał znaczenie dla zadań intensywnie wykorzystujących procesor, które wymagają trwałości pamięci podręcznej, chyba że zablokujesz konkretny rdzeń dla każdego PID. Możesz zwiększyć przedział czasu dzięki polityce harmonogramu SCHED_BATCH i poprawić wydajność do 300% w niektórych przypadkach, przy jednoczesnym zmniejszeniu interaktywnego czasu reakcji. Przeciwny efekt mniejszych przedziałów czasowych występuje w przypadku SCHED_RR (co zmniejszy przepustowość, ale zwiększy czas reakcji w czasie rzeczywistym).

Za pomocą harmonogramu można ustawić zasady określonych PID dla wszystkich PID w zestawie B jako pojedyncze polecenie. Można go również użyć do zablokowania określonych PID do konkretnych rdzeni, co byłoby optymalnym rozwiązaniem, ponieważ trwałość pamięci podręcznej nie zależy już od przedziału czasu, ale wymaga to większego wysiłku, ponieważ trzeba uruchomić osobne polecenie harmonogramtool dla każdego PID.


1

Jeśli każdy proces ma swój rdzeń, nie ma żadnych ograniczeń pierwszeństwa.

Jeśli jednak zaplanujesz proces, który będzie uruchamiany co 30 minut co 15 minut, zaczniesz mieć potrzebę ustalania priorytetów, ponieważ proces zacznie się nakładać.

Nie ma jednak „najlepszych” zasad planowania.

Naprawdę zależą od tego, co chcesz osiągnąć. Ale na początku pozostawiłbym to SCHED_OTHER, ustawienie domyślne i obserwowałem przez jakiś czas, zanim spróbuję bardziej specjalistycznych rzeczy.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.