xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
include
xrpl
core
LoadMonitor.h
1
#pragma once
2
3
#include <xrpl/basics/UptimeClock.h>
4
#include <xrpl/beast/utility/Journal.h>
5
#include <xrpl/core/LoadEvent.h>
6
7
#include <
chrono
>
8
#include <
cstdint
>
9
#include <
mutex
>
10
11
namespace
xrpl
{
12
13
// Monitors load levels and response times
14
15
// VFALCO TODO Rename this. Having both LoadManager and LoadMonitor is
16
// confusing.
17
//
18
class
LoadMonitor
19
{
20
public
:
21
explicit
LoadMonitor
(
beast::Journal
j);
22
23
void
24
addLoadSample
(
LoadEvent
const
& sample);
25
26
void
27
addSamples
(
int
count,
std::chrono::milliseconds
latency);
28
29
void
30
setTargetLatency
(
std::chrono::milliseconds
avg,
std::chrono::milliseconds
pk);
31
32
bool
33
isOverTarget
(
std::chrono::milliseconds
avg,
std::chrono::milliseconds
peak);
34
35
// VFALCO TODO make this return the values in a struct.
36
struct
Stats
37
{
38
Stats
();
39
40
std::uint64_t
count
{0};
41
std::chrono::milliseconds
latencyAvg
;
42
std::chrono::milliseconds
latencyPeak
;
43
bool
isOverloaded
{
false
};
44
};
45
46
Stats
47
getStats
();
48
49
bool
50
isOver
();
51
52
private
:
53
void
54
update
();
55
56
std::mutex
mutex_
;
57
58
std::uint64_t
counts_
{0};
59
int
latencyEvents_
{0};
60
std::chrono::milliseconds
latencyMSAvg_
;
61
std::chrono::milliseconds
latencyMSPeak_
;
62
std::chrono::milliseconds
targetLatencyAvg_
;
63
std::chrono::milliseconds
targetLatencyPk_
;
64
UptimeClock::time_point
lastUpdate_
;
65
beast::Journal
const
j_
;
66
};
67
68
}
// namespace xrpl
chrono
beast::Journal
A generic endpoint for log messages.
Definition
Journal.h:44
xrpl::LoadEvent
Definition
LoadEvent.h:16
xrpl::LoadMonitor::latencyMSPeak_
std::chrono::milliseconds latencyMSPeak_
Definition
LoadMonitor.h:61
xrpl::LoadMonitor::addLoadSample
void addLoadSample(LoadEvent const &sample)
Definition
LoadMonitor.cpp:85
xrpl::LoadMonitor::counts_
std::uint64_t counts_
Definition
LoadMonitor.h:58
xrpl::LoadMonitor::setTargetLatency
void setTargetLatency(std::chrono::milliseconds avg, std::chrono::milliseconds pk)
Definition
LoadMonitor.cpp:127
xrpl::LoadMonitor::targetLatencyAvg_
std::chrono::milliseconds targetLatencyAvg_
Definition
LoadMonitor.h:62
xrpl::LoadMonitor::getStats
Stats getStats()
Definition
LoadMonitor.cpp:156
xrpl::LoadMonitor::latencyEvents_
int latencyEvents_
Definition
LoadMonitor.h:59
xrpl::LoadMonitor::isOverTarget
bool isOverTarget(std::chrono::milliseconds avg, std::chrono::milliseconds peak)
Definition
LoadMonitor.cpp:134
xrpl::LoadMonitor::addSamples
void addSamples(int count, std::chrono::milliseconds latency)
Add multiple samples.
Definition
LoadMonitor.cpp:110
xrpl::LoadMonitor::mutex_
std::mutex mutex_
Definition
LoadMonitor.h:56
xrpl::LoadMonitor::LoadMonitor
LoadMonitor(beast::Journal j)
Definition
LoadMonitor.cpp:30
xrpl::LoadMonitor::latencyMSAvg_
std::chrono::milliseconds latencyMSAvg_
Definition
LoadMonitor.h:60
xrpl::LoadMonitor::lastUpdate_
UptimeClock::time_point lastUpdate_
Definition
LoadMonitor.h:64
xrpl::LoadMonitor::update
void update()
Definition
LoadMonitor.cpp:47
xrpl::LoadMonitor::j_
beast::Journal const j_
Definition
LoadMonitor.h:65
xrpl::LoadMonitor::targetLatencyPk_
std::chrono::milliseconds targetLatencyPk_
Definition
LoadMonitor.h:63
xrpl::LoadMonitor::isOver
bool isOver()
Definition
LoadMonitor.cpp:142
xrpl::UptimeClock::time_point
std::chrono::time_point< UptimeClock > time_point
Definition
UptimeClock.h:24
cstdint
std::chrono::milliseconds
std::uint64_t
mutex
xrpl
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition
algorithm.h:5
xrpl::LoadMonitor::Stats::latencyPeak
std::chrono::milliseconds latencyPeak
Definition
LoadMonitor.h:42
xrpl::LoadMonitor::Stats::latencyAvg
std::chrono::milliseconds latencyAvg
Definition
LoadMonitor.h:41
xrpl::LoadMonitor::Stats::Stats
Stats()
Definition
LoadMonitor.cpp:24
xrpl::LoadMonitor::Stats::isOverloaded
bool isOverloaded
Definition
LoadMonitor.h:43
xrpl::LoadMonitor::Stats::count
std::uint64_t count
Definition
LoadMonitor.h:40
Generated by
1.17.0