From aeefd324e10b783ef96905b509016f3628019469 Mon Sep 17 00:00:00 2001 From: Dorian Koch <doriank@fsmpi.rwth-aachen.de> Date: Thu, 26 Sep 2024 16:14:22 +0200 Subject: [PATCH] Use more resources for CutAndTranscode --- src/jobs/cut_and_transcode.py | 1 + src/jobs/wrapped_job.py | 9 +++++++++ src/kubernetes_api.py | 19 +++++++++---------- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/src/jobs/cut_and_transcode.py b/src/jobs/cut_and_transcode.py index b41cca2..4498337 100644 --- a/src/jobs/cut_and_transcode.py +++ b/src/jobs/cut_and_transcode.py @@ -43,6 +43,7 @@ class CutAndTranscode(WrappedJob): def config(self) -> ContainerConfig: cfg = ContainerConfig(image="registry.git.fsmpi.rwth-aachen.de/videoag_infra/production/dominic_render_video:latest", args=["-C", self.in_dir]) cfg.mount_video_fs("/mnt/video_data") + cfg.resources("8", "12Gi") return cfg def prepare(self, cstate: "ControllerState"): diff --git a/src/jobs/wrapped_job.py b/src/jobs/wrapped_job.py index 4d7534a..8f28541 100644 --- a/src/jobs/wrapped_job.py +++ b/src/jobs/wrapped_job.py @@ -10,10 +10,19 @@ class ContainerConfig: self.command = command self.args = args self.mount_video_fs_path: str | None = None + self.resources_dict: dict | None = None def mount_video_fs(self, mount_path: str): self.mount_video_fs_path = mount_path + def resources(self, cpu: str, memory: str): + self.resources_dict = { + "limits": { + "cpu": cpu, + "memory": memory + } + } + class WrappedJob(Event): diff --git a/src/kubernetes_api.py b/src/kubernetes_api.py index 47a0f79..2b1e50c 100644 --- a/src/kubernetes_api.py +++ b/src/kubernetes_api.py @@ -34,15 +34,7 @@ class K8sApi(): def list_worker_jobs(self) -> V1JobList: return self.batch_v1.list_namespaced_job(NAMESPACE, label_selector=f"app={WORKER_LABEL}") - def create_job(self, job: WrappedJob, resources={}): - default_res = { - "limits": { - "cpu": "1", - "memory": "1Gi" - } - } - resources = {**default_res, **resources} - + def create_job(self, job: WrappedJob): cfg = job.config() job_manifest = { @@ -76,7 +68,12 @@ class K8sApi(): "image": cfg.image, "args": cfg.args, "command": cfg.command, - "resources": resources + "resources": { + "limits": { + "cpu": "1", + "memory": "1Gi" + } + } } ], "priorityClassName": "videoag-worker-priority", @@ -118,6 +115,8 @@ class K8sApi(): } } ] + if cfg.resources_dict is not None: + job_manifest["spec"]["template"]["spec"]["containers"][0]["resources"] = cfg.resources_dict # print(f"Creating job with manifest: {json.dumps(job_manifest)}") return self.batch_v1.create_namespaced_job(NAMESPACE, job_manifest) -- GitLab