backend: leave the time before the first rate record unknown in the adaptive audit
This commit is contained in:
1 parent
20b0f7fbd8
commit
93abf59afb
2 files changed
+13
-11
No files matched your search
@@ -74,7 +74,8 @@ public static class AdaptiveAudit
|
||||
|
||||
/// <summary>
|
||||
/// 把按时间排好的状态变化还原成每个时间桶里各状态的秒数。一次变化之后到下一次变化之前,是变化后的状态和频率;
|
||||
/// 区间里第一次变化之前,状态是这次变化的「从」(频率不知道,不计入平均)。一种采集方法一条时间线(同一条线路上每种方法各自变化)。
|
||||
/// 第一次记录之前什么都不知道,不计入任何状态(节点启动时会记一条「start → watch」,所以每个自适应的任务从启动起就有记录;
|
||||
/// 没有这条记录的时段是节点还没升级到会上报的版本)。一种采集方法一条时间线(同一条线路上每种方法各自变化)。
|
||||
/// </summary>
|
||||
public static AdaptiveResult Summarize(IReadOnlyList<RateChange> changes, long fromMs, long toMs, long stepMs)
|
||||
{
|
||||
@@ -92,10 +93,10 @@ public static class AdaptiveAudit
|
||||
var maxLoss = new double[count];
|
||||
RateChange[] ordered = [.. group.OrderBy(c => c.AtMs)];
|
||||
|
||||
// 每一段:[开始, 结束) 内的状态;第一段在第一次变化之前,状态取它的「从」
|
||||
string state = ordered[0].From;
|
||||
double? hz = null;
|
||||
long cursor = Math.Min(ordered[0].AtMs, fromMs);
|
||||
// 每一段:[这次变化, 下一次变化) 内是变化后的状态和频率;第一次记录之前不知道,不计
|
||||
string state = ordered[0].To;
|
||||
double? hz = ordered[0].Hz;
|
||||
long cursor = ordered[0].AtMs;
|
||||
foreach (RateChange change in ordered)
|
||||
{
|
||||
AddSegment(cursor, change.AtMs, state, hz);
|
||||
|
||||
Reference in new issue
Block a user