Napisz minimalny kontrakt zgłoszenia
Użyteczne zgłoszenie wskazuje właściciela, projekt, dostępne dane wejściowe, zidentyfikowaną komendę lub procedurę oraz oczekiwany wynik. Podaje liczbę jednoczesnych kart, pamięć na kartę, szacowany czas i miejsce docelowe wyników. Określa wreszcie termin, powód tego terminu oraz osobę uprawnioną do zaakceptowania opóźnienia lub ograniczenia zakresu.
Brak tych informacji nie może być ukryty za wysokim priorytetem. Zadanie, którego dane wejściowe nie są gotowe, pozostaje niedopuszczalne, nawet jeśli projekt jest ważny. Zapytaj, czego brakuje, i ustal moment ponownego rozpatrzenia. Kolejka staje się wtedy narzędziem decyzyjnym: nie zamienia się w magazyn zgłoszeń, których nie da się uruchomić, a które każdy ma nadzieję, że zostaną obsłużone samoistnie.
Rozróżnij dopuszczenie, rezerwację i prawo przejścia
Dopuszczenie sprawdza, czy zadanie można rozpatrzyć: obecność uprawnień, danych, zgodności, zdolności i procedury. Rezerwacja chroni następnie ustalony przedział czasowy lub zasób. Priorytet wybiera kolejność między dopuszczalnymi zgłoszeniami, które rywalizują o dostępny zasób. Te trzy decyzje mogą należeć do różnych osób; ujawnij ten podział, aby uniknąć domyślnego zatwierdzenia potrzeby technicznej.
Wolna karta nie czyni wszystkich zadań dopuszczalnymi. Może brakować potrzebnego dysku, licencja może ograniczać współbieżność albo wymagany może być poprzedni wynik. I odwrotnie, zgłoszenie gotowe technicznie może czekać na decyzję o terminie. Pokazuj zrozumiały powód i następne działanie, a nie sam numer pozycji, którego nikt nie potrafi zinterpretować.
Zdefiniuj priorytety, które nie stają się przywilejami
Wybierz kilka czytelnych klas, na przykład potwierdzony zewnętrzny termin, praca bieżąca i eksploracja bez ustalonej daty. Ustal, kto może przypisać klasę i jaki dowód ją uzasadnia. W obrębie klasy reguła stażu lub rotacji może uczynić wybór przewidywalnym. Zgłoszenie rozbite na sto drobnych podań nie może mechanicznie zyskać sto razy większych szans niż zgłoszenie innego zespołu.
Slurm rozróżnia między innymi wiek dopuszczalnego oczekiwania i sprawiedliwy udział oparty na przydzielonych i zużytych zasobach. Ilustruje to dwa różne pytania: od kiedy czekamy i jaką część już wykorzystaliśmy? Twoja reguła może pozostać ręczna. Nie przejmuj formuły punktowej bez zrozumienia jej parametrów; wagi konkretnego harmonogramu nie stanowią uniwersalnej normy sprawiedliwości.
Przykład fikcyjny: wpuścić pilne zadanie, nie wypychając pozostałych
Fikcyjny zespół „Plans et repères” korzysta z jednej karty. O 9:00 zadanie z projektu Plans ma potwierdzone okno do 11:00; nie można go przerwać. Dwa kompletne zlecenia czekają: Repères, czterdzieści minut, oraz Esquisses, osiemdziesiąt minut. O 9:30 przychodzi pilne zlecenie na trzydzieści minut, zamówione przez Repères na przegląd w południe. Wszystkie te czasy są założeniami dydaktycznymi, nie pomiarami.
Lokalna reguła pozwala zatwierdzonemu pilnemu zleceniu przejść do najbliższego punktu zwolnienia, bez przerywania już rozpoczętej pracy. Pilne zlecenie startuje więc o 11:00 i teoretycznie kończy się o 11:30. Zespół przyznaje następnie pierwszeństwo Esquisses, aby Repères, obsłużony już przez swoje pilne zlecenie, nie monopolizował kolejki. Ten wyjątek i nowy oczekiwany start Repères są ogłaszane odpowiednim osobom odpowiedzialnym.
| Hipotetyczny przedział | Projekt | Powód przejścia |
|---|---|---|
| 9:00–11:00 | Plany | Przedział już zajęty, nie można przerwać |
| 11:00–11:30 | Punkty odniesienia, pilne | Potwierdzony zewnętrzny termin przed południem |
| 11:30–12:50 | Szkice | Rotacja po obsłużeniu pilnego zadania Punktów odniesienia |
| 12:50–13:30 | Punkty odniesienia, zwykłe zgłoszenie | Następne dopuszczalne żądanie |
Zapobieganie zagłodzeniu długich zadań
Systematyczne obsługiwanie najkrótszego żądania daje pozornie płynną kolejkę, ale może w nieskończoność odsuwać długie zadanie. Przewidź zarezerwowane okna lub ponowne rozpatrzenie po ogłoszonym wieku oczekiwania. Ten próg to wewnętrzna zasada do ustalenia, a nie gwarantowany termin realizacji. Jeśli długie zadanie rzeczywiście przekracza dostępny okres, jego dopuszczenie powinno prowadzić do nowego harmonogramu, a nie do oczekiwania bez wyjścia.
Krótkie luki mogą pomieścić zadania, które nie odsuwają zarezerwowanego wyjazdu. Ta decyzja zakłada wiarygodne oszacowanie, zasób rzeczywiście zgodny i możliwość zakończenia w oknie. Nie wypełniaj wszystkich marginesów harmonogramu nowymi zobowiązaniami. Rezerwa przeznaczona na pochłonięcie odchylenia nie jest darmowym slotem; jej wykorzystanie musi mieć osobę odpowiedzialną i znany skutek.
Przewidzenie anulowania o jasnym zakresie
Wskaż, kto może anulować własne żądanie, żądanie projektu lub wykonanie, które stało się niebezpieczne dla innych zadań. Dla żądania wciąż oczekującego potwierdź jego wycofanie z kolejności. Dla uruchomionego zadania najpierw sprawdź, co można przerwać, co trzeba zachować i kto czeka na jego wyniki. Komunikat „anulowanie zlecone” nie dowodzi jeszcze, że zasób jest wolny.
Rzeczywiste narzędzie określa skutki techniczne. Dokumentacja scancel rozróżnia zadanie i jego kroki oraz wysłanie sygnału i anulowanie zadania. Przed użyciem równoważnego narzędzia sprawdź identyfikator i zakres, których dotyczy; unikaj globalnego wyboru dla wygody. Następnie zweryfikuj zakończenie procesów i miejsce docelowe częściowych wyników. Plan odtwarzania danych jest omówiony w dossier migracji, oddzielnie od tej zasady priorytetu.
Ograniczenie prób i odizolowanie wadliwego zadania
Zdecyduj przed wykonaniem, ile automatycznych prób jest dopuszczalnych dla tej samej przyczyny. Nieprawidłowe dane wejściowe nie staną się poprawne przez ponowne uruchomienie; chwilowo niedostępna zależność może uzasadniać ponowną próbę po weryfikacji. Zasada powinna wskazywać maksymalną liczbę, ewentualny odstęp czasu i osobę odpowiedzialną za ponowne rozpatrzenie. Licznik zerowany przy każdym nowym zgłoszeniu znosi tę ochronę: powiąż kolejne żądania z tym samym problemem.
Po osiągnięciu ustalonego limitu usuń wadliwe zadanie z normalnej konkurencji i umieść je w logicznej kwarantannie z czytelnym powodem. Reszta dopuszczalnych zadań może być kontynuowana. Przywrócenie wymaga poprawki lub zatwierdzonego wyjaśnienia, małej ukierunkowanej kontroli i decyzji właściciela; nie odzyskuje automatycznie priorytetu dawnego nagłego przypadku. Ta procedura reguluje dopuszczenie po niepowodzeniu. Przechowywanie wyników i ich wznowienie pozostają w dossier migracji, bez wymyślania tu nowego rejestru stanów.
Testowanie polityki na czterech prostych sytuacjach
Poproś kierowników projektów o przegląd zasady na czterech przypadkach: dwa identyczne żądania, nagły przypadek w trakcie nieprzerywalnego zadania, długie zadanie otoczone krótkimi żądaniami oraz niekompletne żądanie zaklasyfikowane jako pilne. Dla każdego przypadku inna osoba musi dojść do tego samego następnego startu lub jednoznacznie wskazać wymagany arbitraż. Zasada, którą rozumie tylko jej autor, nie jest gotowa do stosowania.
Sprawdź również, czy anulowanie nie przyznaje dwukrotnie tej samej zdolności i czy zablokowane zadanie nie powstrzymuje niepotrzebnie innego dopuszczalnego zadania. Te weryfikacje mogą zacząć się na papierze; nie dowodzą implementacji harmonogramu. Jeśli następnie zautomatyzujesz, odtwórz te same scenariusze na skonfigurowanym narzędziu, zanim uzależnisz od tego zobowiązanie projektowe.
Pomiar usługi świadczonej przez kolejkę
Śledź czas oczekiwania kwalifikujących się zgłoszeń według klasy i projektu oraz powody blokad. Oddziel oczekiwanie, zajętość i czas do zaakceptowanego wyniku. Pojedyncza suma ukończonych prac może maskować zespół stale odsuwany na bok lub nagromadzenie pilnych zadań. Sprawdź także rozbieżności między szacowaną a rzeczywistą zajętością: wpływają one bezpośrednio na przyszłe rezerwacje.
Zrewiduj politykę w terminie wybranym z zespołem lub po incydencie, który ujawni brakującą regułę. Zmieniaj jedną regułę naraz i ogłoś jej wpływ na już istniejące zgłoszenia. Oczekiwany rezultat to wytłumaczalna kolejność, śledzone wyjątki i spójny harmonogram. Nie zastępuje ona ani uwierzytelniania konta Capordia, ani uprawnień maszyny, i nie tworzy żadnego zobowiązania do wsparcia.
Pytania przed decyzją
Czy pilne zadanie zawsze powinno być obsłużone pierwsze?
Pilne zadanie musi być kwalifikujące się, uzasadnione i zatwierdzone zgodnie ze wspólną regułą. Nie czyni ono trwającej pracy przerywalną. Określ jego punkt wejścia, przesunięte zgłoszenia i osobę, która bierze odpowiedzialność za wpływ na ich terminy.
Jak zapobiec monopolizowaniu slotów przez jeden zespół?
Spójrz na zasoby już pozyskane i czas oczekiwania innych projektów, a następnie zastosuj rotację lub jawną regułę podziału. Sama liczba zgłoszeń nie jest miarą sprawiedliwości. Zaplanuj także obsługę długotrwałych zadań.
Czy ta metoda wymaga instalacji Slurm?
Nie. Dokumentacja Slurm wyjaśnia niektóre rozróżnienia, ale politykę można najpierw zastosować w narzędziu koordynacyjnym zespołu. Ewentualna automatyzacja wymaga własnej konfiguracji i kontroli; nie zakłada się, że jakikolwiek scheduler jest dostarczony.