From 6e53637b06e677e1d1ee5fd273ab84c0ee3abe7a Mon Sep 17 00:00:00 2001 From: John Spray Date: Wed, 3 Jan 2024 15:55:21 +0000 Subject: [PATCH] neon_local: pin pageservers and endpoints --- control_plane/src/endpoint.rs | 6 ++++-- control_plane/src/pageserver.rs | 13 +++++++++++-- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/control_plane/src/endpoint.rs b/control_plane/src/endpoint.rs index 071f22dc2b..5f611d8b92 100644 --- a/control_plane/src/endpoint.rs +++ b/control_plane/src/endpoint.rs @@ -549,8 +549,10 @@ impl Endpoint { // Launch compute_ctl println!("Starting postgres node at '{}'", self.connstr()); - let mut cmd = Command::new(self.env.neon_distrib_dir.join("compute_ctl")); - cmd.args(["--http-port", &self.http_address.port().to_string()]) + let mut cmd = Command::new("/usr/bin/taskset"); + cmd.args(["-c".to_string(), "8-11".to_string()]) + .args([self.env.neon_distrib_dir.join("compute_ctl")]) + .args(["--http-port", &self.http_address.port().to_string()]) .args(["--pgdata", self.pgdata().to_str().unwrap()]) .args(["--connstr", &self.connstr()]) .args([ diff --git a/control_plane/src/pageserver.rs b/control_plane/src/pageserver.rs index 7d490016bf..4a170e46fa 100644 --- a/control_plane/src/pageserver.rs +++ b/control_plane/src/pageserver.rs @@ -12,6 +12,7 @@ use std::io::Write; use std::num::NonZeroU64; use std::path::PathBuf; use std::process::{Child, Command}; +use std::str::FromStr; use std::time::Duration; use anyhow::{bail, Context}; @@ -216,11 +217,19 @@ impl PageServerNode { if update_config { args.push(Cow::Borrowed("--update-config")); } + + let mut taskset_args = vec![ + "-c".to_string(), + format!("{}", self.conf.id.0 - 1), + self.env.pageserver_bin().to_string_lossy().into(), + ]; + taskset_args.extend(args.into_iter().map(|a| a.to_string())); + background_process::start_process( "pageserver", &datadir, - &self.env.pageserver_bin(), - args.iter().map(Cow::as_ref), + &PathBuf::from_str("/usr/bin/taskset").unwrap(), + taskset_args, self.pageserver_env_variables()?, background_process::InitialPidFile::Expect(self.pid_file()), || async {