mirror of
https://github.com/LibreQoE/LibreQoS.git
synced 2025-02-25 18:55:32 -06:00
Replace time window calculation with an accurate, constant based calc
This commit is contained in:
parent
1ec7c7a8ee
commit
afcec77b06
@ -6,44 +6,46 @@ pub struct InfluxTimePeriod {
|
|||||||
sample: i32,
|
sample: i32,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const fn minutes_to_seconds(minutes: i32) -> i32 {
|
||||||
|
minutes * 60
|
||||||
|
}
|
||||||
|
|
||||||
|
const fn hours_to_seconds(hours: i32) -> i32 {
|
||||||
|
minutes_to_seconds(hours * 60)
|
||||||
|
}
|
||||||
|
|
||||||
|
const fn days_to_seconds(days: i32) -> i32 {
|
||||||
|
hours_to_seconds(days * 24)
|
||||||
|
}
|
||||||
|
|
||||||
|
const SAMPLES_PER_GRAPH: i32 = 30;
|
||||||
|
|
||||||
|
const fn aggregate_window(seconds: i32) -> i32 {
|
||||||
|
seconds / SAMPLES_PER_GRAPH
|
||||||
|
}
|
||||||
|
|
||||||
impl InfluxTimePeriod {
|
impl InfluxTimePeriod {
|
||||||
pub fn new(period: &str) -> Self {
|
pub fn new(period: &str) -> Self {
|
||||||
let start = match period {
|
let start_seconds = match period {
|
||||||
"5m" => "-5m",
|
"5m" => minutes_to_seconds(5),
|
||||||
"15m" => "-15m",
|
"15m" => minutes_to_seconds(15),
|
||||||
"1h" => "-60m",
|
"1h" => hours_to_seconds(1),
|
||||||
"6h" => "-360m",
|
"6h" => hours_to_seconds(6),
|
||||||
"12h" => "-720m",
|
"12h" => hours_to_seconds(12),
|
||||||
"24h" => "-1440m",
|
"24h" => hours_to_seconds(24),
|
||||||
"7d" => "-10080m",
|
"7d" => days_to_seconds(7),
|
||||||
"28d" => "-40320m",
|
"28d" => days_to_seconds(28),
|
||||||
_ => "-5m",
|
_ => {
|
||||||
};
|
tracing::warn!("Unknown period: {}", period);
|
||||||
|
minutes_to_seconds(5)
|
||||||
let aggregate = match period {
|
}
|
||||||
"5m" => "10s",
|
|
||||||
"15m" => "30s",
|
|
||||||
"1h" => "1m",
|
|
||||||
"6h" => "6m",
|
|
||||||
"12h" => "12m",
|
|
||||||
"24h" => "24m",
|
|
||||||
"7d" => "210m",
|
|
||||||
"28d" => "4h",
|
|
||||||
_ => "10s",
|
|
||||||
};
|
|
||||||
|
|
||||||
let sample = match period {
|
|
||||||
"5m" => 3,
|
|
||||||
"15m" => 10,
|
|
||||||
"1h" => 40,
|
|
||||||
"6h" => 100,
|
|
||||||
"12h" => 200,
|
|
||||||
"24h" => 400,
|
|
||||||
"7d" => 2100,
|
|
||||||
"28d" => 4400,
|
|
||||||
_ => 1
|
|
||||||
};
|
};
|
||||||
|
let start = format!("-{}s", start_seconds);
|
||||||
|
let aggregate_seconds = aggregate_window(start_seconds);
|
||||||
|
let aggregate = format!("{}s", aggregate_seconds);
|
||||||
|
let sample = start_seconds / 100;
|
||||||
|
|
||||||
|
println!("Period: {period}, Seconds: {start_seconds}, AggSec: {aggregate_seconds}, Samples: {sample}");
|
||||||
|
|
||||||
Self {
|
Self {
|
||||||
start: start.to_string(),
|
start: start.to_string(),
|
||||||
|
Loading…
Reference in New Issue
Block a user