Views

Nazapki

From KDMwiki

Jump to: navigation, search

Nazapki to skrót od najczęściej zadawane pytania według propozycji internetowej poradni językowej PWN.

Spis treści

Katalogi tymczasowe na halo

Pytanie: Przygotowałem(am) dane wejściowe w katalogu /tmp1/mojedane/ na halo, a podczas uruchamiania zadania z kolejki danych nie ma!

Zadania wykonywane za pośrednictwem systemu kolejkowego są uruchamiane na wybranych przez system kolejkowy węzłach obliczeniowych, a nie na komputerze halo, na który Państwo się logują. Komputer halo i każdy z węzłów obliczeniowych mają oddzielne katalogi tymczasowe. Dlatego też zadanie uruchomione z kolejki zobaczy zawartość katalogu /tmp1 lokalnego węzła, a nie katalogu /tmp1 z komputera halo.

Schematyczna struktura klastra halo
Schematyczna struktura klastra halo

Jednym ze sposobów na rozwiązanie problemu brakujących lokalnie danych jest dopisanie w skrypcie instrukcji kopiującej dane z halo do lokalnego katalogu. Można w tym celu użyć polecenia scp:

 mkdir -p /tmp1/mojedane
 scp halo:/tmp1/mojedane/plik.dat /tmp1/mojedane

Oczywiście te instrukcje powinny pojawić się gdzieś przed wywołaniem programu korzystającego z kopiowanych danych.

Należy także pamiętać o analogicznym problemie po zakończeniu obliczeń: wyniki zapisane przez program w lokalnym katalogu tymczasowym nie będą widoczne na komputerze halo. Należy więc dopisać w skrypcie, po instrukcji wywołującej program, odpowiednie instrukcje kopiujące wyniki na komputer halo.

Pytanie: Otrzymuję maila od PBS-a na halo mówiącego o niemożliwości skopiowania jakichś plików. O co chodzi?

Otrzymanie maila podobnego do poniższego oznacza, że wstawiliśmy do kolejki zadanie znajdujące się w katalogu /tmp1 na halo. System PBS nie umie przetwarzać zadań znajdujących się w systemie plików /tmp1, proszę umieścić plik z zadaniem w katalogu domowym.

 PBS Job Id: 117580.halo
 Job Name:   tmp1.2
 An error has occurred processing your job, see below.
 Post job file processing error; job 117580.halo on host n104/4
 
 Unable to copy file /var/spool/PBS/spool/117580.halo.OU to bolo@halo:/tmp1/bolo/tmp1.2.o117580

Pytanie: Moje zadania kończą sie z powodu braku miejsca na /tmp1 na węzłach!

Zadanie zostało uruchomione bez rezerwacji miejsca na dysku, co oznacza, że na potrzeby zadania przyjęto domyślnie zapotrzebowanie 0 (zero) bajtów. Wstawiając zadanie do kolejki należy zarezerwować miejsce używając opcji -l file=xxx(b,kb,gb), np. -l file=30gb. Uwaga - jest to specyfikacja na każdy proces zadania.

Sprawiedliwość systemu kolejkowego

Pytanie: Jak wygląda algorytm wybierający zadania do uruchomienia?

Co ustaloną jednostkę czasu system kolejkowy sprawdza, ile procesorów zajmuje obecnie dany użytkownik i za każdy zajęty procesor nalicza punkt. Podczas decydowania, ktore zadanie uruchomić, osoba mająca najmniej punktów wygrywa. W miarę upływu czasu punktacja ulega redukcji, tzn. im bardziej historyczna próbka, tym mniejszy ma współczynnik wagowy. W skrócie oznacza to, że im mniej użytkownik liczył, tym większe ma szanse na szybkie uruchomienie zadania.

Uwaga - punktacja zliczana jest za rzeczywisty okres zajętości, tzn. jeśli zadanie miało wyspecyfikowane 336h walltime, a z jakichś powodów skończyło się po minucie, zostanie naliczona punktacja za minutę.

Dodatkowo na halo część procesorów jest zablokowana wyłącznie dla potrzeb zadań minimum czteronodowych - bez blokady wielka liczba niedużych zadań powodowała niemożność zgromadzenia wolnych kilkunastu nodów wymaganych przez takie zadania.

Szczegóły działania algorytmu wyboru zadań do uruchomienia przedstawione zostały w Biuletynie nr 16.

Strumienie stderr i stdout w PBS

Pytanie: Jak można zmienić nazwy plików zawierających standardowe wyjście i standardowy błąd z mojego skryptu?

Domyślnie PBS tworzy dwa dodatkowe pliki wynikowe NAZWA_ZADANIA.oJOBID i NAZWA_ZADANIA.eJOBID, zawierające odpowiednio zapis strumienia wyjściowego (stdout) i strumienia błędu (stderr) dla skryptu wstawionego do kolejki.

Nazwy te można zmienić dodając w skrypcie polecenia:

#PBS -o MOJA_NAZWA_PLIKU_ZE_STDOUT
#PBS -e MOJA_NAZWA_PLIKU_ZE_STDERR

Możemy również oba strumienie zapisać w jednym pliku. Do tego posłuży następujący wpis w nagłówku skryptu:

#PBS -j oe
#PBS -o MOJA_NAZWA_PLIKU_ZE_STDOUT_I_STDERR

Instalacja oprogramowania

Pytanie: Czy możliwa jest instalacja...

W większości przypadków jest. W przypadku części składowych systemu operacyjnego, użytkow systemowych i bibliotek, prośbę należy skierować do hpc-admins@icm.edu.pl, oprogramowaniem naukowym zaś zawiaduje software@icm.edu.pl. W razie wątpliwości można przekazać prośbę po prostu pod adres pomoc@icm.edu.pl.

MPI na halo

Pytanie: Dlaczego powinno się używać mpiexec, a nie mpirun?

Program mpirun działa w ten sposób, że pobiera listę nodów przydzielonych do zadania i używając rsh uruchamia na nich poszczególne procesy robiąc to tak, że system kolejkowy nie zdaje sobie sprawy z ich obecności i nie potrafi ich monitorować. Efektem jest monitoring tylko części zadania - np. raportowane zużycie 4 MB pamięci i 30 sekund cputime przez szesnastonodowe, liczące się dwa tygodnie zadanie. Procesy takie są w stanie zagarnąć zasoby znacznie przekraczające wyspecyfikowane, wpływając negatywnie na procesy innych użytkowników oraz powodując nieefektywny przydział zasobów.

Co więcej, w przypadku problemów z zadaniem uruchomionym z użyciem mpirun nie jest możliwa żadna diagnostyka procesów składowych zadania, tak więc są obe pozbawione wsparcia.

Dodatkowo, w przypadku awaryjnego zakończenia któregokolwiek z procesów składowych zadania system kolejkowy nie jest o tym informowany, czego efektem jest trwanie niedziałających, lecz blokujących zasoby i naliczających zajętość na konto użytkownika zadań.

Z kolei mpiexec uruchamia procesy informując o tym system kolejkowania, który jest w stanie je monitorować i raportować o wszelkich problemach. Jeżeli zadanie działa uruchomione za pomocą mpirun, a przekracza wyspecyfikowane zasoby przy mpiexec, oznacza to, ze w obydwu przypadkach zadanie je przekracza, tylko przy mpirun system kolejkowy nie jest w stanie tego stwierdzić.

Limity w systemie kolejkowym

Pytanie: Zadanie na halo czeka w kolejce w nieskończoność!

Zwykle wynika to z przekroczenia maksymalnej ilości dostępnego zasobu. Najczęściej nadużywane są parametry mem oraz file. mem oznacza fizycznie dostępną pamięć (nie wirtualną). Konstrukcję:

-l mem=Agb
-l nodes=B:ppn=C

należy interpretować jako: A GB fizycznej pamięci na B węzłów (node'ów), C procesów na każdym węźle, co daje A/(B*C) pamięci fizycznej na proces oraz równolegle A/B pamięci fizycznej na węzeł. Jeśli liczba ta przekroczy maksymalnie dostępną ilość wolnej pamięci, zadanie nie uruchomi się nigdy z powodu braku zasobów. Najczęściej spotykany przypadek:

-l mem=2gb
-l nodes=1:ppn=2

daje 1 GB na proces, lecz 2 GB na node, a że każdy node ma właśnie 2 GB pamięci, której część jest na stałe zajęta przez system operacyjny, zadanie takie nigdy się nie uruchomi.

Zauważyć należy, że parametr mem w ogóle nie występuje w manualu (man pbs_resources) - zamiast niego używać należy opisanego tam vmem, który oznacza całkowity rozmiar procesu bez przełożenia na rodzaj używanej przez niego pamięci.

Drugi przypadek dotyczy parametru file. Konstrukcja:

-l file=Agb
-l nodes=B:ppn=C

oznacza A GB wolnego miejsca dla każdego z B*C procesów w katalogach /tmp1 węzłów. System plików /tmp1 na klastrze halo ma rozmiar 92 GB na wezłach dwuprocesorowych IBM, natomiast na ośmioprocesorowych węzłach Sun 112 GB. Wyspecyfikowanie limitów przekraczających tę wielkość powoduje nieskończone oczekiwanie na zasoby. Przykładowo konstrukcja:

-l file=60gb
-l nodes=1:ppn=2

oznacza wymaganie 120 GB w węźle.

Pomoc

Pytanie: Mam problem, a na stronach WWW nie ma na niego odpowiedzi. Do kogo mogę się zwrócić z pomocą?

W przypadku, gdy na stronach WWW nie ma informacji pomagających rozwiązać Państwa problem, prosimy przesłać pytanie pod adres pomoc@icm.edu.pl.