< Podręcznik użytkownika KDM < System kolejkowy
LSF (Load Shearing Facility) - system kolejkowy firmy Platform Computing Corporation. Jest to program zarządzający zasobami, potrafiący monitorować, analizować obciążenie sieci serwerów obliczeniowych i planować kolejność uruchamiania zadań. Za pomocą LSF można też uruchamiać zadania zdalnie w taki sposób, w jaki byłyby one uruchomione lokalnie.
System LSF nie jest już używany w WCSS.
Spis treści |
Zadanie LSF trafia do systemu w momencie wstawienia go do kolejki za pomocą komendy bsub<code>. Zadanie w kolejce może oczekiwać na uruchomienie (stan PEND), lub zostać uruchomione i przejść w stan działania (RUN).
Zadanie w trakcie oczekiwania można wstrzymać i zabronić tymczasowo jego uruchomienia (stan PSUSP), natomiast zadanie już uruchomione może zostać wstrzymane przez użytkownika (USUSP) lub system (SSUSP) i wznowione, gdy zostaną spełnione odpowiednie wymagania systemowe. Wreszcie, zadanie może się zakończyć poprawnie, z błędem lub wskutek działania z zewnątrz.
Jedynym przejściem ze stanu uruchomienia w stan oczekiwania jest migracja. Wiąże się ona z zapisem stanu zadania (tzw. checkpoint), który może zostać odtworzony tylko po spełnieniu odpowiednich warunków, w tym dostępności identycznych zasobów sprzed zapisu oraz jedynie na zgodnej platformie sprzętowo-systemowej. Nie wszystkie zadania można poddać tej operacji.
Zadanie umieszcza się w systemie kolejkowania za pomocą komendy <code>bsub:
> bsub [opcje] komenda
Po wstawieniu do kolejki zadanie otrzymuje swój unikalny identyfikator liczbowy (JOBID), którym można posługiwać się sterując później zadaniem (wartość JOBID można sprawdzić wywołując polecenie bjobs).
Argumentami bsub są opcje dotyczące dalszego zachowania się zadania oraz lista stanowiąca nazwę i argumenty programu-zadania do wykonania. Jeśli brakuje tej ostatniej listy, bsub pobierze ją ze standardowego wejścia tworząc skrypt.
Opcje bsub mogą być również podawane w skrypcie, oznakowane etykietami #BSUB. Można w ten sposób w skrypcie umieścić wszystkie potrzebne informacje i wstawić zadanie do kolejki poleceniem:
> bsub < skrypt.lsf
Oba sposoby przedstawiono poniżej na przykładzie uruchomienia komendy ls -la w kolejce normal:
> bsub -q normal ls -la
> bsub < skrypt.lsf
gdzie skrypt.lsf ma postać:
#!/bin/bash
# opcje dla bsub: #BSUB -q normal
# komenda do wywołania: ls -la
Po wstawieniu zadań do kolejek LSF pozwala na podglądanie w jakim stanie znajdują się zadania i jakie są jego parametry.
Do podglądu zadań służy komenda bjobs.
> bjobs
Najważniejsze parametry tej komendy wraz z opisem zawiera poniższa tabela.
Tabela 1. Parametry bjobs
| parametr | opis | wartość domyślna |
| -m serwer | pokaż tylko zadania uruchomione lub zawieszone na serwerze serwer | wszystkie zadania na wszystkich serwerach w klastrze |
| -l | dodatkowe, szczegółowe informacje o wybranych zadaniach | krótki opis zadań |
| -p | tylko zadania oczekujące (PEND); podaje przyczynę oczekiwania | wszystkie zadania |
| -r | tylko zadania już uruchomione (RUN) i nie zawieszone | wszystkie zadania |
| -s | tylko zadania zawieszone (SSUSP i USUSP); podaje przyczynę zawieszenia | wszystkie zadania |
| -u user | tylko zadania użytkownika o nazwie user; | tylko zadania użytkownika wywołującego komendę bjobs |
| -u all | zadania każdego z użytkowników | tylko zadania użytkownika wywołującego komendę bjobs |
| -q kolejka | tylko zadania z kolejki kolejka | zadania ze wszystkich kolejek |
| -J nazwa | tylko zadania o nazwie nazwa | wszystkie zadania |
| -a | również zadania zakończone w ciągu ostatniej godziny | tylko zadania obecne w kolejkach |
| numer_ID | tylko zadanie o podanym numerze ID | wszystkie zadania |
Zadania wybierane przez bjobs do wyświetlenia, to zadania spełniające warunki nałożone przez wszystkie podane parametry lub ich brak. Kilka przykładów wywołań bjobs:
> bjobs
normal, które wystartowały na serwerze grom
> bjobs -m grom -q normal -u all
> bjobs -l -J pierwsze_zadanie
> bjobs -p -u maciek
Zadania niepoprawnie wstawione do kolejek, lub błędnie wyspecyfikowane powinny być z nich usuwane. Oszczędza to czas procesora, a nowe, poprawione zadanie wykona się szybciej. Zamiast usuwać zadanie można także zmodyfikować jego parametry tak, aby odpowiadały oczekiwaniom użytkownika.
bkill.
bkill usuwa zadanie oczekujące w kolejce, lub wysyła sygnał zakończenia do działającego zadania (domyślnie jest to sygnał KILL).
> bkill 12345
-m , -u , -q oraz -J . Parametry te mają identyczne znaczenie jak w przypadku komendy bjobs.
bmod.
bhist.
Wynik działania zadania LSF (stdout i stderr) jest zapisywany do plików, które zostały podane podczas wstawiania zadania do kolejki w opcjach komendy bsub. Jeżeli pliki te nie zostały wyspecyfikowane, wynik działania zadania zostanie przesłany do użytkownika pocztą elektroniczną.
Serwery obliczeniowe nie pełnią funkcji serwerów pocztowych, mają jednak możliwość wysłania wiadomości. Najskuteczniej jest umieścić w katalogu własnym na serwerze plik .forward zawierający adres e-mail, na który system pocztowy ma przesyłać wiadomości. Poczta elektroniczna nie jest jednak polecanym sposobem przekazywania wyników obliczeń, ponieważ nie ma pracujących demonów obsługujących kolejki pocztowe, dlatego potencjalnie wiadomość może "utknąć" i nie dotrzeć do odbiorcy.
Pliki wynikowe (również te wyspecyfikowane opcjami -o>/code> oraz <code>-e ) pozostają na serwerze, na którym zadanie zostało uruchomione. Jeżeli pliki te mają zostać przekopiowane lub przeniesione z powrotem na serwer, z którego zadanie zostało wstawione do kolejki, powinno to zostać wskazane w opcji -f komendy bsub.
Przykład ilustruje prawidłowe wstawienie zadania do kolejki (bsub), wskazanie pliku wejściowego (-i), który ma być przekopiowany na serwer wybrany do obliczeń, przekierowanie wyjścia do plików (-o, -e) oraz przekopiowanie wybranych plików (-f) po zakończeniu zadania na serwer, z którego zadanie zostało wstawione do kolejki:
> bsub -i input.txt -o output.txt -e error.txt -f "output.txt < output.txt" -f "error.txt < error.txt" g98 input.txt
Do podglądu stanu i parametrów kolejek zdefiniowanych w klastrze LSF służy komenda:
> bqueues
Kolejki wyświetlane są w kolejności zgodnej z ich priorytetem (wartość PRIO). Dla każdej kolejki można odczytać liczbę wszystkich obecnych w niej zadań (NJOBS) oraz odpowiednio liczbę zadań oczekujących, uruchomionych i wstrzymanych (PEND, RUN, SUSP). STATUS określa, czy kolejka jest dostępna (Open) i czy uruchamia obecnie zadania (Active). Pozostałe pola opisują ograniczenia nałożone na kolejki.
Więcej szczegółowych informacji o kolejkach można uzyskać wydając komendę:
> bqueues -l
Nie wszystkie kolejki uruchamiają zadania na każdym serwerze. Aby wyświetlić listę kolejek dostępnych na konkretnym serwerze, należy wydać polecenie:
> bqueues -m serwer
Jeżeli ostatnim parametrem jest nazwa kolejki, wówczas informacje będą dotyczyły tylko tej wybranej kolejki:
> bqueues short
Do podglądu stanu i parametrów serwerów służy komenda:
> bhosts
Dla każdego z serwerów można odczytać liczbę wszystkich uruchomionych na nim zadań, działających oraz zawieszonych (NJOBS, RUN, SUSP). STATUS informuje o tym, czy serwer uruchamia zadania (ok) czy jest niedostępny lub przeciążony (unavail, closed).
Więcej szczegółowych informacji o serwerach można uzyskać wydając komendę:
> bhosts -l
Jeżeli ostatnim parametrem jest nazwa serwera, wówczas informacje będą dotyczyły tylko tego wybranego serwera:
> bhosts grom
Zobacz też: konfiguracja kolejek LSF, system kolejkowy
| Systemy kolejkowe | LSF ⋅ PBS [ OpenPBS ⋅ PBSPro ⋅ Torque/PBS ] |
|---|