in rd-agent/src/cmd.rs [104:187]
fn maybe_reload(&mut self) -> bool {
let sobjs = &mut self.sobjs;
let last_cpu_headroom = sobjs.cmd_file.data.sideloader.cpu_headroom;
// Configs are controlled by benchmarks while they're running, don't
// reload.
let (re_bench, re_slice, _re_side, re_oomd) = match self.state {
BenchIoCost | BenchHashd => (false, false, false, false),
_ => {
let force = self.force_apply;
self.force_apply = false;
(
Self::maybe_reload_one(&mut sobjs.bench_file) || force,
Self::maybe_reload_one(&mut sobjs.slice_file) || force,
Self::maybe_reload_one(&mut sobjs.side_def_file) || force,
Self::maybe_reload_one(&mut sobjs.oomd.file) || force,
)
}
};
let re_cmd = Self::maybe_reload_one(&mut sobjs.cmd_file);
let mem_size = sobjs.bench_file.data.hashd.actual_mem_size();
if re_bench {
if let Err(e) = bench::apply_iocost(&mut sobjs.bench_file.data, &self.cfg) {
warn!(
"cmd: Failed to apply changed iocost configuration on {:?} ({:?})",
self.cfg.scr_dev, &e
);
}
}
if re_bench || re_slice {
if let Err(e) = slices::apply_slices(&mut sobjs.slice_file.data, mem_size, &self.cfg) {
warn!("cmd: Failed to apply updated slice overrides ({:?})", &e);
}
}
if (re_bench || re_oomd) && self.cfg.enforce.oomd {
if let Err(e) = sobjs.oomd.apply() {
error!("cmd: Failed to apply oomd configuration ({:?})", &e);
panic!();
}
}
let mut apply_sideloader = false;
if re_slice {
if sobjs
.slice_file
.data
.controlls_disabled(super::instance_seq())
{
if sobjs.sideloader.svc.unit.state == US::Running {
info!("cmd: Controllers are being forced off, disabling sideloader");
let _ = sobjs.sideloader.svc.unit.stop();
}
} else {
if sobjs.sideloader.svc.unit.state != US::Running {
info!("cmd: All controller enabled, enabling sideloader");
apply_sideloader = true;
}
}
}
if sobjs.cmd_file.data.sideloader.cpu_headroom != last_cpu_headroom {
info!(
"cmd: Updating sideloader headroom from {:.2} to {:.2}",
last_cpu_headroom, sobjs.cmd_file.data.sideloader.cpu_headroom
);
apply_sideloader = true;
}
if apply_sideloader && self.cfg.enforce.all() {
let sideloader_cmd = &sobjs.cmd_file.data.sideloader;
let slice_knobs = &sobjs.slice_file.data;
if let Err(e) = sobjs.sideloader.apply(sideloader_cmd, slice_knobs) {
error!("cmd: Failed to apply sideloader changes ({:?})", &e);
panic!();
}
}
re_bench || re_cmd || re_slice
}