Kaynağa Gözat

fix: only add --shm-size when recipe explicitly sets it

The --shm-size flag is redundant when --privileged is already used
(the container can grow its SHM as needed).  Changed default_shm_size
to return empty string, and the docker command builder only adds
--shm-size when the recipe's shm_size field is non-empty.

Recipes that rely on a specific shm-size (e.g. deepseek-v4-flash with
shm_size = "64gb") still get it; recipes that don't set it no longer
get the default 10g.
Alexander Korolev 4 ay önce
ebeveyn
işleme
6f2c33a82f
5 değiştirilmiş dosya ile 13 ekleme ve 8 silme
  1. 1 1
      src/before_serve.rs
  2. 2 2
      src/config.rs
  3. 3 1
      src/docker/mod.rs
  4. 6 3
      src/docker/tests.rs
  5. 1 1
      src/doctor.rs

+ 1 - 1
src/before_serve.rs

@@ -237,7 +237,7 @@ mod tests {
             entrypoint: vec![],
             distributed_backend: "mp".to_string(),
             before_serve: vec![],
-            shm_size: "10g".to_string(),
+            shm_size: String::new(),
         }
     }
 

+ 2 - 2
src/config.rs

@@ -115,7 +115,7 @@ pub struct Recipe {
     pub entrypoint: Vec<String>,
     #[serde(default = "default_distributed_backend")]
     pub distributed_backend: String,
-    /// Shared memory size for the container. Default: "10g".
+    /// Shared memory size for the container (e.g. "64gb"). Omitted when empty.
     #[serde(default = "default_shm_size")]
     pub shm_size: String,
     /// Recipe-level pre-serve commands (appended after cluster-level).
@@ -132,7 +132,7 @@ fn default_distributed_backend() -> String {
 }
 
 fn default_shm_size() -> String {
-    "10g".to_string()
+    String::new()
 }
 
 fn default_tensor_parallel_size() -> u32 {

+ 3 - 1
src/docker/mod.rs

@@ -363,10 +363,12 @@ fn build_docker_command(
         "--ipc=host".to_string(),
         "--privileged".to_string(),
         "--network=host".to_string(),
-        format!("--shm-size {}", recipe.shm_size.as_str()),
         "--ulimit memlock=-1".to_string(),
         "--ulimit stack=67108864".to_string(),
     ];
+    if !recipe.shm_size.is_empty() {
+        flags.push(format!("--shm-size {}", recipe.shm_size.as_str()));
+    }
     if !keep {
         flags.push("--rm".to_string());
     }

+ 6 - 3
src/docker/tests.rs

@@ -52,7 +52,7 @@ fn trec() -> Recipe {
         entrypoint: vec![],
         distributed_backend: "mp".into(),
         before_serve: vec![],
-        shm_size: "10g".into(),
+        shm_size: String::new(),
     }
 }
 
@@ -112,7 +112,10 @@ fn mp() {
     assert!(!cmd.contains("RAY_ADDRESS"));
     assert!(cmd.contains("--rm"), "default --rm should be present");
     // New: defaults & cluster env
-    assert!(cmd.contains("--shm-size 10g"), "default shm-size missing");
+    assert!(
+        !cmd.contains("--shm-size"),
+        "shm-size should not be set by default"
+    );
     assert!(cmd.contains("--ulimit memlock=-1"));
     assert!(cmd.contains("--ulimit stack=67108864"));
     assert!(
@@ -222,7 +225,7 @@ fn sglang_recipe() -> Recipe {
         entrypoint: vec!["sglang".into(), "serve".into()],
         distributed_backend: "mp".into(),
         before_serve: vec![],
-        shm_size: "10g".into(),
+        shm_size: String::new(),
     }
 }
 

+ 1 - 1
src/doctor.rs

@@ -323,7 +323,7 @@ mod tests {
             entrypoint: vec![],
             distributed_backend: "mp".to_string(),
             before_serve: vec![],
-            shm_size: "10g".to_string(),
+            shm_size: String::new(),
         }
     }