diff --git a/crates/tower-cmd/src/run.rs b/crates/tower-cmd/src/run.rs index 514df320..ad7e8d1b 100644 --- a/crates/tower-cmd/src/run.rs +++ b/crates/tower-cmd/src/run.rs @@ -322,9 +322,12 @@ fn build_cli_execution_spec( parameters: params, env_vars, resources: ResourceLimits { - cpu_millicores: None, - memory_mb: None, - storage_mb: None, + cpu_limit_millicores: None, + cpu_request_millicores: None, + memory_limit_mb: None, + memory_request_mb: None, + storage_limit_mb: None, + storage_request_mb: None, max_pids: None, gpu_count: 0, timeout_seconds: 3600, diff --git a/crates/tower-runtime/src/execution.rs b/crates/tower-runtime/src/execution.rs index f69e51f9..387b54f9 100644 --- a/crates/tower-runtime/src/execution.rs +++ b/crates/tower-runtime/src/execution.rs @@ -114,17 +114,27 @@ pub enum CacheBackend { None, } -/// ResourceLimits defines compute resource constraints +/// ResourceLimits defines compute resource requests and limits. +/// Missing values are resolved by the execution backend. #[derive(Debug, Clone)] pub struct ResourceLimits { /// CPU limit in millicores (e.g., 1000 = 1 CPU) - pub cpu_millicores: Option, + pub cpu_limit_millicores: Option, + + /// CPU request in millicores + pub cpu_request_millicores: Option, /// Memory limit in megabytes - pub memory_mb: Option, + pub memory_limit_mb: Option, + + /// Memory request in megabytes + pub memory_request_mb: Option, /// Ephemeral storage limit in megabytes - pub storage_mb: Option, + pub storage_limit_mb: Option, + + /// Ephemeral storage request in megabytes + pub storage_request_mb: Option, /// Maximum number of processes pub max_pids: Option, diff --git a/crates/tower-runtime/tests/subprocess_test.rs b/crates/tower-runtime/tests/subprocess_test.rs index 8d7448c6..7c80cbe3 100644 --- a/crates/tower-runtime/tests/subprocess_test.rs +++ b/crates/tower-runtime/tests/subprocess_test.rs @@ -65,9 +65,12 @@ async fn create_execution_spec(id: String, package: Package) -> ExecutionSpec { command: None, }, resources: ResourceLimits { - cpu_millicores: None, - memory_mb: None, - storage_mb: None, + cpu_limit_millicores: None, + cpu_request_millicores: None, + memory_limit_mb: None, + memory_request_mb: None, + storage_limit_mb: None, + storage_request_mb: None, max_pids: None, gpu_count: 0, timeout_seconds: 300,