From 931decce0d015293e4e1f74922af7bbe1be159f1 Mon Sep 17 00:00:00 2001 From: Manuel Guenther <manuel.guenther@idiap.ch> Date: Fri, 28 Mar 2014 14:16:19 +0100 Subject: [PATCH] Improved behavior when multiple jobs are re-submitted at the same time. --- gridtk/models.py | 4 ++-- gridtk/script/jman.py | 12 ++++++++++-- gridtk/sge.py | 3 ++- setup.py | 2 +- 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/gridtk/models.py b/gridtk/models.py index 67a3017..1b1d104 100644 --- a/gridtk/models.py +++ b/gridtk/models.py @@ -292,9 +292,9 @@ class Job(Base): deps = str(sorted(list(set([dep.unique for dep in self.get_jobs_we_wait_for()])))) if dependencies < len(deps): deps = deps[:dependencies-3] + '...' - return format.format(self.unique, job_id, queue, status, self.name, deps, command_line) + return format.format(self.unique, job_id, queue[:12], status, self.name, deps, command_line) else: - return format.format(self.unique, job_id, queue, status, self.name, command_line) + return format.format(self.unique, job_id, queue[:12], status, self.name, command_line) diff --git a/gridtk/script/jman.py b/gridtk/script/jman.py index dc5b172..c483646 100644 --- a/gridtk/script/jman.py +++ b/gridtk/script/jman.py @@ -90,6 +90,14 @@ def get_ids(jobs): return indexes +def get_memfree(memory, parallel): + """Computes the memory required for the memfree field.""" + number = int(memory.rstrip(string.ascii_letters)) + memtype = memory.lstrip(string.digits) + if not memtype: + memtype = "G" + return "%d%s" % (number*parallel, memtype) + def submit(args): """Submission command""" @@ -115,7 +123,7 @@ def submit(args): if args.qname != 'all.q': kwargs['hvmem'] = args.memory if args.parallel is not None: kwargs['pe_opt'] = "pe_mth %d" % args.parallel - kwargs['memfree'] = "%d%s" % (int(args.memory.rstrip(string.ascii_letters)) * args.parallel, args.memory.lstrip(string.digits)) + kwargs['memfree'] = get_memfree(args.memory, args.parallel) kwargs['dry_run'] = args.dry_run kwargs['stop_on_failure'] = args.stop_on_failure @@ -140,7 +148,7 @@ def resubmit(args): kwargs['hvmem'] = args.memory if args.parallel is not None: kwargs['pe_opt'] = "pe_mth %d" % args.parallel - kwargs['memfree'] = "%d%s" % (int(args.memory.rstrip(string.ascii_letters)) * args.parallel, args.memory.lstrip(string.digits)) + kwargs['memfree'] = get_memfree(args.memory, args.parallel) if args.io_big: kwargs['io_big'] = True if args.no_io_big: diff --git a/gridtk/sge.py b/gridtk/sge.py index 426973e..59bb8c2 100644 --- a/gridtk/sge.py +++ b/gridtk/sge.py @@ -154,7 +154,8 @@ class JobManagerSGE(JobManager): logger.debug("Re-submitting job '%s' with dependencies '%s' to the grid." % (job, deps)) self._submit_to_grid(job, job.name, job.get_array(), deps, job.log_dir, **arguments) - self.session.commit() + # commit after each job to avoid failures of not finding the job during execution in the grid + self.session.commit() self.unlock() diff --git a/setup.py b/setup.py index 6399394..78b4ac7 100644 --- a/setup.py +++ b/setup.py @@ -9,7 +9,7 @@ if sys.version_info[:2] < (2, 7) or ((3,0) <= sys.version_info[:2] < (3,2)): setup( name='gridtk', - version='1.1.3a0', + version='1.1.4a0', description='SGE Grid and Local Submission and Monitoring Tools for Idiap', url='http://github.com/idiap/gridtk', -- GitLab