Biocentrum Ochota - Grafen

Infrastruktura informatyczna dla rozwoju strategicznych kierunków biologii i medycyny

MONITOROWANIE ZADANIA

Stan wykonania

Aby sprawdzić, na jakim etapie znajduje się nasze zadanie, należy użyć polecenia qstat. Jest to polecenie menedżera zadań. Najbardziej popularne wywołania tego polecenia to:

  • qstat pokazuje stan wszystkich zadań danego użytkownika w formie skróconej,
  • qstat -f <identyfikator zadania> pokazuje szczegółowe informacje o wybranym zadaniu.

Przykładowy wynik pierwszego polecenia widzimy poniżej:

[tester@headnode ~]$ qstat
Job id                   Name             User            Time Use S Queue
------------------------ ---------------- --------------- -------- - -----
293.master1               listing          tester          00:00:00 C batch
294.master1               zadanie-wait1    tester          00:02:13 R batch
295.master1               zadanie-wait2    tester          0        R batch
296.master1               zadanie4         tester          0        R batch
297.master1               zadanie5         tester          0        Q batch

Znaczenie kolumn tabeli jest następujące:

  • Job id – unikalny identyfikator zadania, tworzony na podstawie numeru porządkowego i nazwy hosta, z którego wywołano zadanie,
  • Name – nazwa nadane zadaniu przez użytkownika,
  • User – nazwa użytkownika, który zlecił zadanie,
  • Time Use – ilość wykorzystanego czasu procesora,
  • S – stan zadania (Q-czeka w kolejce, R-jest uruchomione, C-zakończone),
  • Queue – to nazwa kolejki, do której trafiło zadanie.

Widzimy zatem, że powyższy wydruk informuje nas o następujących zadaniach:

  • listing – nie zajęło czasu procesora i zostało zakończone,
  • zadanie-wait – zajęło 2 minuty i jest wykonywane,
  • zadanie-wait2 – uruchomione,
  • zadanie4 – uruchomione,
  • zadanie5 – oczekuje na zwolnienie zasobów.

Szczegółowe informacje o wybranym zadaniu zawierają znacznie więcej parametrów

[tester@headnode ~]$ qstat -f 294.master1.kevlar
Job Id: 294.master1.kevlar
Job_Name = zadanie-wait1
Job_Owner = tester@headnode.kevlar
resources_used.cput = 00:02:13
resources_used.mem = 4020kb
resources_used.vmem = 200164kb
resources_used.walltime = 00:02:54
job_state = R
queue = batch
server = master1.kevlar
Checkpoint = u
ctime = Sat Jan 21 14:00:11 2012
Error_Path = headnode.kevlar:/home/tester/zadanie-wait1.e294
exec_host = n13/1+n13/0+n12/1+n12/0+n11/1+n11/0+n10/1+n10/0+n9/1+n9/0+n8/1
+n8/0+n7/1+n7/0+n6/1+n6/0+n5/1+n5/0+n4/1+n4/0+n3/1+n3/0+n2/1+n2/0+n1/1
+n1/0
Hold_Types = n
Join_Path = n
Keep_Files = n
Mail_Points = a
mtime = Sat Jan 21 14:00:32 2012
Output_Path = headnode.kevlar:/home/tester/zadanie-wait1.o294
Priority = 0
qtime = Sat Jan 21 14:00:11 2012
Rerunable = True
Resource_List.nodect = 13
Resource_List.nodes = 13:ppn=2
Resource_List.walltime = 01:00:00
session_id = 16036
Variable_List = PBS_O_QUEUE=batch,PBS_O_HOME=/home/tester,
PBS_O_LANG=en_US.UTF-8,PBS_O_LOGNAME=tester,
PBS_O_PATH=/usr/mpi/gcc/openmpi-1.4.3/bin:/usr/kerberos/bin:/opt/inte
l/ics/2011.0.013/bin:/opt/intel/itac/8.0.1.009/bin:/opt/intel/impi/4.0
.1.007/intel64/bin:/opt/intel/composerxe-2011.0.084/bin/intel64:/opt/i
ntel/composerxe-2011.0.084/mpirt/bin/intel64:/opt/intel/composerxe-201
1.0.084/bin/intel64:/opt/intel/composerxe-2011.0.084/mpirt/bin/intel64
:/usr/local/bin:/bin:/usr/bin:/home/tester/bin,
PBS_O_MAIL=/var/spool/mail/tester,PBS_O_SHELL=/bin/bash,
PBS_O_HOST=headnode.kevlar,PBS_SERVER=master1.kevlar,
PBS_O_WORKDIR=/home/tester
comment = Job started on Sat Jan 21 at 14:00
etime = Sat Jan 21 14:00:11 2012
submit_args = -N zadanie-wait1 -l nodes=13:ppn=2 ./skrypt-wait.sh
start_time = Sat Jan 21 14:00:11 2012
Walltime.Remaining = 3531
start_count = 1
fault_tolerant = False
submit_host = headnode.kevlar
init_work_dir = /home/tester

Najważniejsze spośród nich (poza opisanymi powyżej) to:

  • resources_used.cput - zużyty czas działania procesora,
  • resources_used.mem - ilość użytej pamięci,
  • resources_used.walltime - całkowity czasy wykonywania zadania,
  • Error_Path i Output_Path - ścieżki do plików z rezultatami wykonania zadanie (patrz niżej),
  • exec_host - nazwy węzłów, na których przebiegało wykonanie (tutaj po dwa rdzenie na każdym z węzłów n1-n13),
  • submit_args - paramatry, z którymi zlecono zadanie,
  • start_time - czas rozpoczęcia wykonywania zadania,
  • init_work_dir - katalog roboczy zadania.

Usuwanie zadania

W każdej chwili możemy usunąć dowolne swoje zadanie - niezależnie od jego bieżącego stanu. Służy do tego polecenie: qdel <identyfikator zadania>.

W przypadku zadania oczekującego, zostanie ono usunięte z kolejki, zadanie w toku zostanie zatrzymane. W obu tych przypadkach zadanie przyjmie stan C - zakończone.

Dane wyjściowe

Zadanie może przekazywać rezultaty swego działania w różny sposób. Jeśli robi to poprzez pliki, to sytuacja jest prosta - katalogi domowe użytkowników na wszystkich węzłach są współdzielone, więc po zakończeniu działania programu można zajrzeć do katalogu roboczego i obejrzeć wyniki tak, jakby się to odbyło na standardowym komputerze PC. Specjalnego omówienia wymaga natomiast kwestia danych przekazywanych na standardowe wyjście i wyjście błędów. Dane te w normalnej sytuacji pokazywane są na ekranie konsoli, jednak w przypadku menedżera zadań program może trafić do wykonania, gdy użytkownika nie ma przy konsoli, np. w nocy.

Z tego powodu do każdego zadania tworzone są dodatkowe pliki, zawierające dane wyjściowe, w katalogu roboczym zadania o nazwach według następującego schematu:

  • <nazwa zadania>.o<numer zadania> - standardowe wyjście programu,
  • <nazwa zadania>.e<numer zadania> - standardowe wyjście błędów programu.

We wcześniejszym przykładzie dla zadania o nazwie zadanie-wait1 i identyfikatorze 294.master1 zostały utworzone pliki zadanie-wait1.o294 i zadanie-wait1.e294. Oczywiście nie dotyczy to zadań uruchamianych w trybie interaktywnym (qsub -I), gdzie standardowe wyjścia pojawiają się bezpośrednio na ekranie.

 
Powrót na początek strony