You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 27 Next »

 

QCG-Monitoring - Narzędzie graficzne QosCosGrid umożliwiające monitoring i śledzenie postępu wykonania aplikacji w infrastrukturze PL-Grid.

Wstęp

Usługa QCG-Monitoring umożliwia śledzenie postępu wykonania aplikacji uruchomionej przy pomocy narzędzi dostępowych QosCosGrid na infrastrukturze PL-Grid. Postęp wykonania aplikacji prezentowany jest w formie graficznej w postaci wykresów, tabel i obrazów w zależności od schematu zdefiniowanego w systemie dla danej aplikacji. Usługa QCG-Monitoring dedykowana jest dla osób wykonujących długotrwałe obliczenia w infrastrukturze, które na podstawie prezentowanych wyników mogą określić stopień zaawansowania obliczeń oraz podjąć decyzje o ewentualnym wstrzymaniu zadania jeśli obliczenia nie przebiegają zgodnie z założeniami.

Portal monitoringu

Prezentacja postępu wykonania aplikacji dostępna jest jako usługa portalowa zintegrowana z infrastrukturą PL-Grid.

Sposób logowania do usługi oraz jej funkcjonalność opisana jest w sekcji: Portal Monitoringu.

 

Schematy monitoringu

Informacja o postępie wykonania aplikacji prezentowana jest zgodnie z wybranymi schematami zarejestrowanymi w systemie i dostępnymi dla poszczególnych aplikacji.

Lista predefiniowanych schematów znajduje się w sekcji: Schematy monitoringu.

Integracja z narzędziami dostępowymi

Aby zadanie obliczeniowe było objęte monitoringiem i pojawiło się w portalu Monitoringu, informacja o tym, ze ma być monitorowane musi być przekazana do systemu w momencie zlecania zadania.

Monitorowanie zadań dostępne jest dla zadań uruchamianych przy użyciu zarówno klienta tekstowego QCG-SimpleClient jak i również graficznego narzędzia QCG-Icon.

Informacja o tym, jak zlecić zadanie aby było ono monitorowane opisane jest w sekcji: Monitorowanie zadania

 

Definicja zadania

Zadanie, którego postęp wykonania ma być monitorowany musi zawierać dyrektywę "#QCG watch-output".

Dyrektywa ta odpowiedzialna jest za poinformowanie systemu o konieczności uruchomienia dodatkowego procesu monitorującego aplikację.

Jednym z argumentów dyrektywy "watch-output" jest skrypt monitorujący.

Skrypt monitorujący

Skrypt monitorujący postęp aplikacji uruchamiany jest automatycznie, cyklicznie przez środowisko QCG.Rolą tego skrypty jest wyszukanie zadanej informacji i przekazanie jej w odpowiednim formacie na standardowe wyjście. Format danych wypisywanych przez skrypt monitorujący jest uzależniony od używanego schematu. Informacjaze standardowego wyjścia jest przechwytywana i wysyłana do usługi QCG-Monitor.

Skrypt monitorujący musi być przesłany wraz z zadaniem za pomocą dyrektywy "#QCG stage-in-file".

Format wyjścia skryptu monitorującego

Wyjście skryptu monitorującego w pierwszej linii musi zawierać definicję formatu pozostałych danych w postaci

qcg.monitor.scheme=format

gdzie format jest jednym z predefiniowanych formatów rozumianych przez usługę QCG-Monitor.

Schematy danych

generic

  • generic - dane wyświetlane są w niezmienionej formie. Kolejne dane dopisywane są do poprzednich.

generic2

  • generic2 - dane wyświetlane są w niezmienionej formie. Kolejne dane zastępują poprzednie.

gaussian

  • gaussian - schemat prezentujący tabele i wykres dla energii wyznaczonej przez aplikację gaussian.

Skrypt monitorujący:

#!/bin/bash
echo 'qcg.monitor.scheme=gaussian'
grep "SCF Done:" _stdouterr | awk '{print $5}'

gaussian_ext

gaussian_ext - rozszerzony monitoring aplikacji gaussian.

Skrypt monitorujący

#!/bin/bash
echo 'qcg.monitor.scheme=gaussianext'
echo "#energy#"
grep "SCF Done:" _stdouterr | awk '{print $5}'
echo "#maxforce#"
grep "^ Maximum Force" _stdouterr | awk '{print $3}'
echo "#rmsforce#"
grep "^ RMS     Force" _stdouterr | awk '{print $3}'
echo "#maxdispl#"
grep "^ Maximum Displacement" _stdouterr | awk '{print $3}'
echo "#rmsdispl#"
grep "^ RMS     Displacement" _stdouterr | awk '{print $3}'


piernik

  • piernik - monitoring aplikacji "piernik"

    #!/bin/bash
    
    WPREFIX=sedov_tst_000
    
    status=`tac ${WPREFIX}.log | grep -e "\s*@\s*0:\s*nstep\s*=" -m 1 || echo "-"`
    status=`echo "$status" | sed -e 's/^[ ]\+@[ ]\+//'`
    headers=`head -n 1 ${WPREFIX}.tsl`
    table_data=`grep -v '^#' ${WPREFIX}.tsl`
    
    lines=''
    while read line; do
        if [ ! -z "$lines" ]; then
            lines="$lines,\n"
        fi
    
        lines="$lines \"$line\""
    done <<< "$table_data"
    
    echo 'qcg.monitor.scheme=piernik'
    echo -e "{"
    echo -e "\t\"status\": \"$status\","
    echo -e "\t\"headers\": \"$headers\","
    echo -e "\t\"rows\": [\n$lines\n]"
    if [ ! -z "$images" ]; then
        echo -e ",\n\t\"images\": [\n$images\n]"
    fi
    echo -e "}"

Przykładowe zadanie

Przykładowe opis zadania dla aplikacji gaussian z monitoringiem postępu wykonania:

#!/bin/bash

#QCG host=nova
#QCG queue=plgrid
#QCG note=Naphthalene gaussian

#QCG output=${JOB_ID}.output
#QCG error=${JOB_ID}.error

#QCG stage-in-file=Naphthalene.gjf
#QCG stage-in-file=gaussian.ntf
#QCG stage-out-dir=.->result.${JOB_ID}

#QCG nodes=1:2
#QCG walltime=PT10M

#QCG notify=xmpp:piotr.kopta@plgrid.pl
#QCG watch-output=20,gaussian.ntf

#QCG application=g09
#QCG argument=Naphthalene.gjf

 

 

  • No labels