架构微调

This commit is contained in:
2026-08-11 11:50:17 +08:00
parent 5710da3acf
commit 6c8c205e86
11 changed files with 157 additions and 36 deletions
@@ -125,7 +125,7 @@ TEST(low_latency_strategy_test, clamps_extremely_small_frequency_interval_withou
}
EXPECT_EQ(strategy.state().target_interval_ns, std::numeric_limits<std::uint64_t>::max());
}
TEST(low_latency_strategy_test, smooths_consumer_feedback_in_kernel) {
TEST(low_latency_strategy_test, separates_consumer_rate_from_jitter_safety_margin) {
Low_Latency_Test_Time_Source time_source;
Low_Latency_Test_Observer observer;
auto strategy = make_low_latency_test_strategy(time_source, observer);
@@ -136,15 +136,34 @@ TEST(low_latency_strategy_test, smooths_consumer_feedback_in_kernel) {
EXPECT_EQ(state.consumer_sample_interval_ns, 10'000'000u);
EXPECT_EQ(state.consumer_smoothed_interval_ns, 10'000'000u);
EXPECT_EQ(state.consumer_variation_ns, 0u);
EXPECT_EQ(state.consumer_safety_interval_ns, 10'000'000u);
EXPECT_EQ(state.consumer_interval_ns, 10'000'000u);
strategy.set_consumer_feedback({14'000'000});
state = strategy.state();
EXPECT_EQ(state.consumer_sample_interval_ns, 14'000'000u);
EXPECT_EQ(state.consumer_smoothed_interval_ns, 10'500'000u);
EXPECT_EQ(state.consumer_variation_ns, 1'000'000u);
EXPECT_EQ(state.consumer_interval_ns, 14'500'000u);
EXPECT_EQ(state.consumer_smoothed_interval_ns, 12'000'000u);
EXPECT_EQ(state.consumer_variation_ns, 250'000u);
EXPECT_EQ(state.consumer_safety_interval_ns, 14'000'000u);
EXPECT_EQ(state.consumer_interval_ns, 14'000'000u);
EXPECT_EQ(state.next_refresh_interval_ns, 14'000'000u);
EXPECT_EQ(state.limit_state, Low_Latency_Test_Strategy::Limit_State::consumer_limited);
}
TEST(low_latency_strategy_test, consumer_jitter_changes_safety_deadline_without_becoming_rate_limit) {
Low_Latency_Test_Time_Source time_source;
Low_Latency_Test_Observer observer;
auto strategy = make_low_latency_test_strategy(time_source, observer);
strategy.set_frequency_hz(1000.0);
strategy.set_consumer_feedback({20'000'000});
strategy.set_consumer_feedback({22'000'000});
strategy.set_consumer_feedback({20'000'000});
const auto state = strategy.state();
EXPECT_EQ(state.consumer_sample_interval_ns, 20'000'000u);
EXPECT_EQ(state.consumer_smoothed_interval_ns, 20'875'000u);
EXPECT_EQ(state.consumer_variation_ns, 242'187u);
EXPECT_EQ(state.consumer_interval_ns, 20'875'000u);
EXPECT_EQ(state.consumer_safety_interval_ns, 21'843'748u);
EXPECT_EQ(state.next_refresh_interval_ns, 20'875'000u);
}
TEST(low_latency_strategy_test, allows_frequency_and_consumer_limits_to_be_cleared) {
Low_Latency_Test_Time_Source time_source;
Low_Latency_Test_Observer observer;
@@ -154,6 +173,7 @@ TEST(low_latency_strategy_test, allows_frequency_and_consumer_limits_to_be_clear
strategy.clear_consumer_feedback();
auto state = strategy.state();
EXPECT_FALSE(state.consumer_feedback_enabled);
EXPECT_EQ(state.consumer_safety_interval_ns, 0u);
EXPECT_EQ(state.consumer_interval_ns, 0u);
EXPECT_EQ(state.limit_state, Low_Latency_Test_Strategy::Limit_State::frequency_limited);
strategy.clear_frequency_limit();