aboutsummaryrefslogtreecommitdiff
path: root/planetwars-matchrunner/src/docker_runner.rs
diff options
context:
space:
mode:
authorIlion Beyst <ilion.beyst@gmail.com>2022-05-21 16:44:58 +0200
committerIlion Beyst <ilion.beyst@gmail.com>2022-05-21 16:44:58 +0200
commitb1151f6ac7ee7c056ff0d40a8cdab72e293babe7 (patch)
tree85f8e77bd8363fde62cb5a8e3f24b92d38e19958 /planetwars-matchrunner/src/docker_runner.rs
parentc873f3a1cb9d59caecfe3f78d04fd0b67e1d8161 (diff)
downloadplanetwars.dev-b1151f6ac7ee7c056ff0d40a8cdab72e293babe7.tar.xz
planetwars.dev-b1151f6ac7ee7c056ff0d40a8cdab72e293babe7.zip
add resource limits to bots
Diffstat (limited to 'planetwars-matchrunner/src/docker_runner.rs')
-rw-r--r--planetwars-matchrunner/src/docker_runner.rs10
1 files changed, 10 insertions, 0 deletions
diff --git a/planetwars-matchrunner/src/docker_runner.rs b/planetwars-matchrunner/src/docker_runner.rs
index 6e73e08..f82e64e 100644
--- a/planetwars-matchrunner/src/docker_runner.rs
+++ b/planetwars-matchrunner/src/docker_runner.rs
@@ -45,10 +45,19 @@ async fn spawn_docker_process(
let bot_code_dir = std::fs::canonicalize(&params.code_path).unwrap();
let code_dir_str = bot_code_dir.as_os_str().to_str().unwrap();
+ let memory_limit = 512 * 1024 * 1024; // 512MB
let config = container::Config {
image: Some(params.image.clone()),
host_config: Some(bollard::models::HostConfig {
binds: Some(vec![format!("{}:{}", code_dir_str, "/workdir")]),
+ network_mode: Some("none".to_string()),
+ memory: Some(memory_limit),
+ memory_swap: Some(memory_limit),
+ // TODO: this applies a limit to how much cpu one bot can use.
+ // when running multiple bots concurrently though, the server
+ // could still become resource-starved.
+ cpu_period: Some(100_000),
+ cpu_quota: Some(10_000),
..Default::default()
}),
working_dir: Some("/workdir".to_string()),
@@ -57,6 +66,7 @@ async fn spawn_docker_process(
attach_stdout: Some(true),
attach_stderr: Some(true),
open_stdin: Some(true),
+ network_disabled: Some(true),
..Default::default()
};