Współplanowanie
Coscheduling to zasada współbieżnych systemów szeregowania powiązanych procesów , które mają działać na różnych procesorach w tym samym czasie ( równolegle ). Istnieją różne specyficzne implementacje, aby to zrealizować.
Jeśli aplikacja składa się ze zbioru procesów ściśle ze sobą współpracujących i jeśli niektóre, ale nie wszystkie procesy są zaplanowane do wykonania, procesy wykonujące mogą próbować komunikować się z tymi, które nie są wykonywane, co spowoduje ich zablokowanie. Ostatecznie inne procesy zostaną zaplanowane do wykonania, ale do tego czasu sytuacja może się odwrócić, tak że procesy te również blokują oczekiwanie na interakcje z innymi. W rezultacie aplikacja robi postępy w tempie co najwyżej jednej interakcji międzyprocesowej na wycinek czasu i będzie miała niską przepustowość i duże opóźnienia .
Realizacja
Coscheduling składa się z dwóch koncepcji:
- Planując dowolny proces w powiązanej grupie, zaplanuj wykonanie wszystkich z nich, aby mogły się efektywnie komunikować.
- Kiedy proces w grupie blokuje się podczas komunikowania się z innym procesem w grupie, nie usuwaj go z jego procesora. Zamiast tego pozostaw jego stan załadowany na jego procesorze na krótki czas, zakładając, że wkrótce otrzyma odpowiedź. Jeśli ten czas upłynie, a proces nadal nie będzie działał, załóżmy, że będzie on uśpiony przez długi czas i ponownie zaplanuj procesor.
Niektóre techniki współschedulingu przedstawiają fragmenty procesów, które nie przebiegają równolegle z resztą współschedulowanego zestawu. Występowanie tych fragmentów jest zwykle minimalizowane przez te algorytmy. Planowanie grupowe to bardziej rygorystyczny wariant planowania wspólnego, który całkowicie odrzuca fragmenty.
Rodzaje coschedulingu
Badacze sklasyfikowali trzy typy coschedulingu: jawne coscheduling , lokalne szeregowanie i niejawne lub dynamiczne coscheduling .
Jawne wspólne planowanie wymaga, aby całe przetwarzanie faktycznie odbywało się w tym samym czasie i jest zwykle realizowane przez globalne planowanie dla wszystkich procesorów. Specyficzny algorytm jest znany jako szeregowanie grupowe .
Coscheduling lokalny umożliwia poszczególnym procesorom niezależne planowanie przetwarzania.
Dynamiczne (lub niejawne) coscheduling to forma coschedulingu, w której poszczególne procesory mogą nadal planować przetwarzanie niezależnie, ale podejmują decyzje dotyczące harmonogramu we współpracy z innymi procesorami.
Historia
Termin „coscheduling” został wprowadzony przez Ousterhout (1982) . Oryginalna definicja jest taka, że zestaw roboczy procesu musi być współplanowany (zaplanowany do jednoczesnego wykonania), aby program równoległy mógł robić postępy .
Zobacz też
Notatki
- Ousterhout, JK (1982). „Techniki planowania dla systemów współbieżnych” (PDF) . Materiały z trzeciej międzynarodowej konferencji dotyczącej rozproszonych systemów komputerowych : 22–30.