[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