balloond: tune defaults: critical floor 256m, bias 400m
Now that critical_guest_available is a hard floor, lower it from 400m to 256m (guests can safely operate with 256 MiB free). Increase guest_available_bias from 300m to 400m for stronger graduated resistance as the balloon fills, keeping the comfortable equilibrium point around 656 MiB. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
4791e391f0
commit
2880cbcdc4
4 changed files with 15 additions and 15 deletions
|
|
@ -171,8 +171,8 @@ Dynamic balloon memory management for all VMs:
|
|||
--min-poll-interval <DURATION> Min poll interval under pressure (default: 250ms)
|
||||
--psi-ceiling <PERCENT> PSI avg10 % for min interval (default: 25)
|
||||
--critical-host-percent <PERCENT> Host critical threshold, % of RAM (default: 5)
|
||||
--critical-guest-available <SIZE> Guest critical threshold, hard floor for free memory (default: 400m)
|
||||
--guest-available-bias <SIZE> Guest bias term, soft cushion above floor (default: 300m)
|
||||
--critical-guest-available <SIZE> Guest critical threshold, hard floor for free memory (default: 256m)
|
||||
--guest-available-bias <SIZE> Guest bias term, soft cushion above floor (default: 400m)
|
||||
--log-level <LEVEL> error, warn, info, debug, trace (default: warn)
|
||||
--quiet Suppress all log output
|
||||
```
|
||||
|
|
@ -234,8 +234,8 @@ to fixed interval if PSI is unavailable.
|
|||
minPollInterval = "250ms";
|
||||
psiCeiling = 25;
|
||||
criticalHostPercent = 5;
|
||||
criticalGuestAvailable = "400m";
|
||||
guestAvailableBias = "300m";
|
||||
criticalGuestAvailable = "256m";
|
||||
guestAvailableBias = "400m";
|
||||
};
|
||||
|
||||
# Tray proxy configuration
|
||||
|
|
|
|||
|
|
@ -155,8 +155,8 @@ For mpv, make sure you use `--vo=wlshm`. Other backends probably won't work.
|
|||
| `vmsilo-balloond.minPollInterval` | string | `"250ms"` | Min poll interval under memory pressure |
|
||||
| `vmsilo-balloond.psiCeiling` | int | `25` | PSI avg10 % that maps to minimum poll interval |
|
||||
| `vmsilo-balloond.criticalHostPercent` | int | `5` | Host critical threshold as percentage of total RAM |
|
||||
| `vmsilo-balloond.criticalGuestAvailable` | string | `"400m"` | Guest critical threshold — hard floor for guest free memory |
|
||||
| `vmsilo-balloond.guestAvailableBias` | string | `"300m"` | Guest bias term — soft cushion above floor that scales with balloon fullness |
|
||||
| `vmsilo-balloond.criticalGuestAvailable` | string | `"256m"` | Guest critical threshold — hard floor for guest free memory |
|
||||
| `vmsilo-balloond.guestAvailableBias` | string | `"400m"` | Guest bias term — soft cushion above floor that scales with balloon fullness |
|
||||
| `vmsilo-balloond.extraArgs` | list of strings | `[]` | Extra command line arguments for vmsilo-balloond daemon |
|
||||
| `vmsilo-tray.logLevel` | string | `"info"` | Log level for tray proxy host and guest daemons (error, warn, info, debug, trace) |
|
||||
| `isolatedPciDevices` | list of strings | `[]` | PCI devices to isolate with vfio-pci |
|
||||
|
|
|
|||
|
|
@ -620,14 +620,14 @@ in
|
|||
|
||||
criticalGuestAvailable = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "400m";
|
||||
description = "Guest critical threshold — hard floor for guest free memory. Balloon inflation will never push guest free memory below this value (e.g. \"400m\", \"256m\").";
|
||||
example = "256m";
|
||||
default = "256m";
|
||||
description = "Guest critical threshold — hard floor for guest free memory. Balloon inflation will never push guest free memory below this value (e.g. \"256m\", \"400m\").";
|
||||
example = "400m";
|
||||
};
|
||||
|
||||
guestAvailableBias = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "300m";
|
||||
default = "400m";
|
||||
description = "Guest bias term — soft cushion above the critical floor that scales with balloon fullness, discouraging inflation as the guest approaches the floor (e.g. \"300m\", \"500m\").";
|
||||
example = "500m";
|
||||
};
|
||||
|
|
|
|||
|
|
@ -83,11 +83,11 @@ pub struct Args {
|
|||
|
||||
/// Guest critical threshold — hard floor for guest free memory (e.g. "400m", "256m").
|
||||
/// Balloon inflation is never allowed to push guest free memory below this value.
|
||||
#[arg(long, value_parser = parse_size, default_value = "400m")]
|
||||
#[arg(long, value_parser = parse_size, default_value = "256m")]
|
||||
pub critical_guest_available: u64,
|
||||
|
||||
/// Guest bias term (e.g. "300m", "314572800").
|
||||
#[arg(long, value_parser = parse_size, default_value = "300m")]
|
||||
/// Guest bias term (e.g. "400m", "314572800").
|
||||
#[arg(long, value_parser = parse_size, default_value = "400m")]
|
||||
pub guest_available_bias: u64,
|
||||
|
||||
/// Log level (error, warn, info, debug, trace).
|
||||
|
|
@ -205,8 +205,8 @@ mod tests {
|
|||
assert_eq!(args.min_poll_interval, Duration::from_millis(250));
|
||||
assert_eq!(args.psi_ceiling, 25);
|
||||
assert_eq!(args.critical_host_percent, 5);
|
||||
assert_eq!(args.critical_guest_available, 400 * 1024 * 1024);
|
||||
assert_eq!(args.guest_available_bias, 300 * 1024 * 1024);
|
||||
assert_eq!(args.critical_guest_available, 256 * 1024 * 1024);
|
||||
assert_eq!(args.guest_available_bias, 400 * 1024 * 1024);
|
||||
assert_eq!(args.log_level, LogLevel::Warn);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue