diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2022-03-01 11:36:55 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-01 11:36:55 +0100 |
commit | 891b71d8280041adcdb7de29ae2cff7ca016aab5 (patch) | |
tree | 25379dd9b8eef8fc7dfb93b5535f67945b4ac8d5 /vespalib | |
parent | a997a80721071cd4c99ddc96d3d8b05c59a7f139 (diff) | |
parent | a46a98bc7fd21a076470c06d560f42b5c7862b88 (diff) |
Merge pull request #21467 from vespa-engine/balder/add-and-use-common-adjustTimeoutByDetectedHz
Add a simple adjustTimeoutByDetectedHz to compute a suitable timeout/…
Diffstat (limited to 'vespalib')
-rw-r--r-- | vespalib/src/tests/time/time_test.cpp | 15 | ||||
-rw-r--r-- | vespalib/src/vespa/vespalib/util/time.cpp | 10 | ||||
-rw-r--r-- | vespalib/src/vespa/vespalib/util/time.h | 2 |
3 files changed, 27 insertions, 0 deletions
diff --git a/vespalib/src/tests/time/time_test.cpp b/vespalib/src/tests/time/time_test.cpp index c2858308006..0ca583c8326 100644 --- a/vespalib/src/tests/time/time_test.cpp +++ b/vespalib/src/tests/time/time_test.cpp @@ -68,4 +68,19 @@ TEST(TimeTest, default_timer_frequency_is_1000_hz) { EXPECT_EQ(1000u, getVespaTimerHz()); } +TEST(TimeTest, timeout_is_relative_to_frequency) { + EXPECT_EQ(1000u, getVespaTimerHz()); + + EXPECT_EQ(1ms, adjustTimeoutByDetectedHz(1ms)); + EXPECT_EQ(20ms, adjustTimeoutByDetectedHz(20ms)); + + EXPECT_EQ(1ms, adjustTimeoutByHz(1ms, 1000)); + EXPECT_EQ(10ms, adjustTimeoutByHz(1ms, 100)); + EXPECT_EQ(100ms, adjustTimeoutByHz(1ms, 10)); + + EXPECT_EQ(20ms, adjustTimeoutByHz(20ms, 1000)); + EXPECT_EQ(200ms, adjustTimeoutByHz(20ms, 100)); + EXPECT_EQ(2000ms, adjustTimeoutByHz(20ms, 10)); +} + GTEST_MAIN_RUN_ALL_TESTS() diff --git a/vespalib/src/vespa/vespalib/util/time.cpp b/vespalib/src/vespa/vespalib/util/time.cpp index bcc289489ea..3737a25f268 100644 --- a/vespalib/src/vespa/vespalib/util/time.cpp +++ b/vespalib/src/vespa/vespalib/util/time.cpp @@ -30,6 +30,16 @@ getVespaTimerHz() { return 1000u; } +duration +adjustTimeoutByHz(duration timeout, long hz) { + return (timeout * 1000) / hz; +} + +duration +adjustTimeoutByDetectedHz(duration timeout) { + return adjustTimeoutByHz(timeout, getVespaTimerHz()); +} + namespace { string diff --git a/vespalib/src/vespa/vespalib/util/time.h b/vespalib/src/vespa/vespalib/util/time.h index dbbae862a8d..783831b5171 100644 --- a/vespalib/src/vespa/vespalib/util/time.h +++ b/vespalib/src/vespa/vespalib/util/time.h @@ -92,5 +92,7 @@ public: * The default frequency (1000hz) for vespa timer, with environment override VESPA_TIMER_HZ capped to [1..1000] */ uint32_t getVespaTimerHz(); +duration adjustTimeoutByDetectedHz(duration timeout); +duration adjustTimeoutByHz(duration timeout, long hz); } |