LSF

Z KdmWiki
Przejdź do nawigacji Przejdź do wyszukiwania

< Podręcznik użytkownika KDM < System kolejkowy < LSF

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.

Podstawy działania

Stany, w których może znajdować się zadanie w systemie LSF

Zadanie LSF trafia do systemu w momencie wstawienia go do kolejki za pomocą komendy bsub. 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.


Operacje na zadaniach

Wstawianie zadania do kolejki

Zadanie umieszcza się w systemie kolejkowania za pomocą komendy 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:

  • z linii poleceń:
> bsub -q normal ls -la
  • z użyciem skryptu:
> bsub < skrypt.lsf

gdzie skrypt.lsf ma postać:

#!/bin/bash  
# opcje dla bsub: #BSUB -q normal
# komenda do wywołania: ls -la


Sprawdzanie stanu zadań

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:

  • wyświetla podstawowe informacje o wszystkich moich zadaniach
> bjobs
  • wyświetla podstawowe informacje o zadaniach wszystkich użytkowników w kolejce normal, które wystartowały na serwerze grom
> bjobs -m grom -q normal -u all
  • wyświetla szczegółowe informacje o zadaniu użytkownika wywołującego polecenie o nazwie 'pierwsze_zadanie'
> bjobs -l -J pierwsze_zadanie
  • wyświetla podstawowe informacje o zadaniach użytkownika 'maciek' oczekujących na uruchomienie i podaje bezpośrednią przyczynę oczekiwania
> bjobs -p -u maciek

Usuwanie, modyfikowanie i historia zadań

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.

  • Aby usunąć zadanie z kolejki należy skorzystać z polecenia bkill.
Polecenie bkill usuwa zadanie oczekujące w kolejce, lub wysyła sygnał zakończenia do działającego zadania (domyślnie jest to sygnał KILL).
Usunąć można także większą liczbę zadań. Należy jednak postępować ostrożnie, aby nie usunąć zadań, które mają być wykonywane. Parametrem komendy jest nazwa lub identyfikator ID zadania przeznaczonego do usunięcia:
> bkill 12345
Powyższa komenda kasuje zadanie o numerze 12345. Zamiast identyfikatora można wybrać grupę zadań do usunięcia za pomocą opcji -m , -u , -q oraz -J . Parametry te mają identyczne znaczenie jak w przypadku komendy bjobs.
  • Do modyfikacji zadań oczekujących w kolejce służy komenda bmod.
  • Historię uruchamianych zadań można przeglądać korzystając z polecenia bhist.

Wynik działania zadania

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 -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. Wstawianie zadania ze specyfikacją przesyłanych plików

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

Stan kolejek i zasobów

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


LSF w sieci


Zobacz też: konfiguracja kolejek LSF, system kolejkowy