diff --git a/gstlal/python/dags/layers/__init__.py b/gstlal/python/dags/layers/__init__.py
index a2cfdccb56d1e92d709a5d7f4cb2085c8ea63583..f780fb8995c370f0896bf13918ee80ba07e00a80 100644
--- a/gstlal/python/dags/layers/__init__.py
+++ b/gstlal/python/dags/layers/__init__.py
@@ -50,7 +50,7 @@ class Layer:
 		Whether to leverage Condor file transfer for moving around
 		files. On by default.
 	dynamic_memory
-		Whether to dynamically increase memory request if jobs are
+		Whether to automatically increase memory request if jobs are
 		put on hold due to going over memory requested.
 		Off by default.
 	requirements
@@ -128,11 +128,10 @@ class Layer:
 		# set dynamic memory opts if requested
 		if self.dynamic_memory:
 			base_memory = submit_options["request_memory"]
-			submit_options["+MemoryUsage"] = f"( {base_memory} ) * 2 / 3"
-			submit_options["request_memory"] = "( MemoryUsage ) * 3 / 2"
+			submit_options["request_memory"] = f"ifThenElse((isUndefined(MemoryUsage) || (MemoryUsage<{int(0.8*base_memory)})), {base_memory}, {2*base_memory})"
 			submit_options["periodic_release"] = " || ".join([
 				submit_options["periodic_release"],
-				"((CurrentTime - EnteredCurrentStatus > 180) && (HoldReasonCode != 34))"
+				"((HoldReasonCode==34) && (RequestMemory>MemoryProvisioned) && (time()-EnteredCurrentStatus>120))"
 			])
 
 		return {