Forschung > Projekte > D-Grid > D-Grid Accounting > Anpassung der Globus pbs.pm zum Accounting von CPUTime

Anpassung der Globus pbs.pm zum Accounting von CPUTime

Accounting der CPUTime

Die CPUTime von Jobs die über die Globus Middleware abgegeben werden wird nicht erfasst. Das Problem taucht nur bei Globus-Jobs auf. Bei diesen Jobs sieht die Prozesskette wie folgt aus:

PPID   PID  PGID   SID TTY      TPGID STAT   UID   TIME COMMAND

   1 18965 18965 18965 ?           -1 Ss       0  52:09 /usr/sbin/pbs_mom -p
18965 31981 31981 31981 ?           -1 Ss   10724   0:00  \_ -sh
31981 32104 31981 31981 ?           -1 S    10724   0:00      \_ /bin/sh/var/spool/pbs/mom_priv/jobs/75195.torqu.SC
32104 32106 31981 31981 ?           -1 S    10724   0:00          \_/usr/bin/ssh gcwn51.d-grid.uni-hannover.de /bin/...

   1  5083  5083  5083 ?           -1 Ss       0   0:30 /usr/sbin/sshd
5083 32108 32108 32108 ?           -1 Ss       0   0:00  \_ sshd: uhdt0024 [priv]
32108 32114 32108 32108 ?           -1 S    10724   0:00      \_ sshd: uhdt0024@notty
32114 32115 32115 32115 ?           -1 Ss   10724   0:00          \_ bash -c /bin/sh /home/uhdt0024/.....
32115 32116 32115 32115 ?           -1 S    10724   0:00              \_ /bin/sh /home/uhdt0024/.globus/c19c4ce...
32116 32117 32115 32115 ?           -1 S    10724   0:00                  \_ /bin/sleep 120

Durch die ssh-Verbindung wird der eigentliche Job vom pbs_mom entkoppelt. Richtig müsste die Prozesskette wie folgt aussehen:

PPID   PID  PGID   SID TTY      TPGID STAT   UID   TIME COMMAND

   1  5194  5194  5194 ?           -1 Ss       0   0:16 /usr/sbin/pbs_mom
5194  6982  6982  6982 ?           -1 Ss   10724   0:00  \_ -sh
6982  7105  6982  6982 ?           -1 S    10724   0:00      \_ /bin/sh /var/spool/pbs/mom_priv/jobs/116313.torq.SC
7105  7107  6982  6982 ?           -1 S    10724   0:00          \_ /bin/sh /var/spool/pbs/mom_priv/jobs/116313.torq.SC
7107  7108  6982  6982 ?           -1 S    10724   0:00              \_ /bin/sh /home/uhdt0024/.globus/1fe7aeee-0798...
7108  7109  6982  6982 ?           -1 S    10724   0:00                  \_ /bin/sh /home/uhdt0024/globus_test.sh
7109  7112  6982  6982 ?           -1 S    10724   0:00                      \_ sleep 60

Die Ursache ist im Perl-Modul pbs.pm zu suchen, das eine Art Wrapperscript um den Job erzeugt.

In der pbs.pm steht folgendes:

[...]
           print JOB <<"EOF";

hosts=\`cat \$PBS_NODEFILE\`;
counter=0
while test \$counter -lt $count; do
   for host in \$hosts; do
       if test \$counter -lt $count; then
           $remote_shell \$host "/bin/sh $cmd_script_name; echo \\\$? > $exit_prefix.\$counter" < $stdin &
           counter=\`expr \$counter + 1\`
       else
           break
       fi
   done
done
wait
[...]

für das richtige Accounting der CPUTime muss es dann wie folgt aussehen:

[...]
           print JOB <<"EOF";

if [ $count -eq 1 ]; then
   /bin/sh $cmd_script_name; echo \$? > $exit_prefix.0 < $stdin
else

hosts=\`cat \$PBS_NODEFILE\`;
counter=0
while test \$counter -lt $count; do
    for host in \$hosts; do
        if test \$counter -lt $count; then
            $remote_shell \$host "/bin/sh $cmd_script_name; echo \\\$? > $exit_prefix.\$counter" < $stdin &
            counter=\`expr \$counter + 1\`
        else
            break
        fi
    done
done
wait
fi
[...]
Letzte Änderung: 22.07.2008
 
Verantwortlich RRZN