[cig-commits] commit: Make SU_cost work on the backend

Mercurial hg at geodynamics.org
Sun Jul 3 20:04:45 PDT 2011


changeset:   24:b583f9aa083d
user:        Walter Landry <wlandry at caltech.edu>
date:        Wed Jun 29 13:43:12 2011 -0700
files:       backend/daemon.py backend/specfem_launcher.sh
description:
Make SU_cost work on the backend


diff -r 383a2b65f692 -r b583f9aa083d backend/daemon.py
--- a/backend/daemon.py	Wed Jun 29 13:42:16 2011 -0700
+++ b/backend/daemon.py	Wed Jun 29 13:43:12 2011 -0700
@@ -166,7 +166,7 @@ class ForkJobManager(JobManager):
 
             status = self.waitForJobToFinish(job, pid)
             
-            self.writeSUCost(job)
+            self.writeSU_cost(job)
             self.uploadOutputFilesForJob(job)
             self.cleanupJob(job)
             
@@ -198,7 +198,7 @@ class ForkJobManager(JobManager):
                 extraArgs)
 
 
-    def writeSUCost(self, job):
+    def writeSU_cost(self, job):
         return
 
     def uploadOutputFilesForJob(self, job):
@@ -247,8 +247,8 @@ class RemoteShellJobManager(ForkJobManag
             
         return
 
-    def writeSUCost(self, job):
-        argv = self.argvForJob(job,extraArgs=['usage'])
+    def writeSU_cost(self, job):
+        argv = self.argvForJob(job,extraArgs=['SU_cost',job.urlPrefix])
         try:
             self.spawn(*argv)
         except Exception:
@@ -297,7 +297,7 @@ class RemoteShellJobManager(ForkJobManag
 
         # Periodically connect to the remote host and check to see
         # whether the job has finished.
-        argv = self.argvForJob(job, extraArgs=job.monitorArgs)
+        argv = self.argvForJob(job, extraArgs=job.monitorArgs+[job.progressUrl])
         ticks = 60 # 10 minutes
         running = os.spawnvp(os.P_WAIT, argv[0], argv)
         while running:
@@ -569,7 +569,7 @@ class SpecfemRun(Run):
             )
         job.urlForInputFile = self.urlForInputFile
         job.inputFiles = [parameters, event, stations, model]
-        job.outputFiles = ["specfem3dglobe.tar.gz", "output_mesher.txt", "output_solver.txt", "output_build.txt", "usage"]
+        job.outputFiles = ["specfem3dglobe.tar.gz", "output_mesher.txt", "output_solver.txt", "output_build.txt"]
         job.monitorArgs = ["monitor"]
         yield job
         return
@@ -690,6 +690,7 @@ class PortalConnection(object):
         response = self.postStatusChange(url, fields)
         portalId = eval(response)
         job.progressUrl = self.portal.jobProgressUrl % portalId
+        job.urlPrefix = self.portal.urlPrefix
         stackless.tasklet(self.jobWatcher)(job, portalId, run)
         
     def jobWatcher(self, job, portalId, run):
diff -r 383a2b65f692 -r b583f9aa083d backend/specfem_launcher.sh
--- a/backend/specfem_launcher.sh	Wed Jun 29 13:42:16 2011 -0700
+++ b/backend/specfem_launcher.sh	Wed Jun 29 13:43:12 2011 -0700
@@ -17,9 +17,15 @@ if [ $# -ge 2 ]; then
             fi
             exit 0
         fi
-    elif [ $2 == "usage" ]; then
+    elif [ $2 == "SU_cost" ]; then
         cd $WORK/seismo/run${run_id}
-        qacct -j Specfem3D_Portal_$1 > usage
+        qacct -j Specfem3D_Portal_$1 > SU_cost
+        seconds=`grep ru_wallclock SU_cost | cut -f 2- -d ' '`
+        procs=`grep slots SU_cost | cut -f 2- -d ' '`
+        SU_cost=`echo "($seconds * $procs + 1800)/3600" | bc`
+        # Remove leading 0's
+        run=`echo $1 | bc`
+        curl -k -F SU_cost=$SU_cost ${3}runs/${run}/SU_cost/
         exit 0
     fi
 fi



More information about the CIG-COMMITS mailing list