rippled
LoadMonitor.h
1 //------------------------------------------------------------------------------
2 /*
3  This file is part of rippled: https://github.com/ripple/rippled
4  Copyright (c) 2012, 2013 Ripple Labs Inc.
5 
6  Permission to use, copy, modify, and/or distribute this software for any
7  purpose with or without fee is hereby granted, provided that the above
8  copyright notice and this permission notice appear in all copies.
9 
10  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11  WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12  MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13  ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15  ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16  OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 */
18 //==============================================================================
19 
20 #ifndef RIPPLE_CORE_LOADMONITOR_H_INCLUDED
21 #define RIPPLE_CORE_LOADMONITOR_H_INCLUDED
22 
23 #include <ripple/basics/UptimeClock.h>
24 #include <ripple/beast/utility/Journal.h>
25 #include <ripple/core/LoadEvent.h>
26 #include <chrono>
27 #include <mutex>
28 
29 namespace ripple {
30 
31 // Monitors load levels and response times
32 
33 // VFALCO TODO Rename this. Having both LoadManager and LoadMonitor is
34 // confusing.
35 //
37 {
38 public:
39  explicit LoadMonitor(beast::Journal j);
40 
41  void
42  addLoadSample(LoadEvent const& sample);
43 
44  void
45  addSamples(int count, std::chrono::milliseconds latency);
46 
47  void
51 
52  bool
54 
55  // VFALCO TODO make this return the values in a struct.
56  struct Stats
57  {
58  Stats();
59 
64  };
65 
66  Stats
67  getStats();
68 
69  bool
70  isOver();
71 
72 private:
73  void
74  update();
75 
77 
86 };
87 
88 } // namespace ripple
89 
90 #endif
ripple::LoadMonitor::isOver
bool isOver()
Definition: LoadMonitor.cpp:162
ripple::LoadMonitor::j_
const beast::Journal j_
Definition: LoadMonitor.h:85
ripple::LoadMonitor::getStats
Stats getStats()
Definition: LoadMonitor.cpp:177
std::chrono::milliseconds
ripple::LoadMonitor::Stats::count
std::uint64_t count
Definition: LoadMonitor.h:60
ripple::LoadMonitor::Stats::isOverloaded
bool isOverloaded
Definition: LoadMonitor.h:63
ripple::LoadMonitor::addSamples
void addSamples(int count, std::chrono::milliseconds latency)
Definition: LoadMonitor.cpp:126
ripple::LoadMonitor::mTargetLatencyAvg
std::chrono::milliseconds mTargetLatencyAvg
Definition: LoadMonitor.h:82
ripple::LoadMonitor::mLastUpdate
UptimeClock::time_point mLastUpdate
Definition: LoadMonitor.h:84
ripple::LoadMonitor::isOverTarget
bool isOverTarget(std::chrono::milliseconds avg, std::chrono::milliseconds peak)
Definition: LoadMonitor.cpp:152
ripple::LoadMonitor::Stats
Definition: LoadMonitor.h:56
ripple::LoadMonitor::mutex_
std::mutex mutex_
Definition: LoadMonitor.h:76
chrono
ripple::LoadMonitor::update
void update()
Definition: LoadMonitor.cpp:63
std::chrono::time_point
beast::Journal
A generic endpoint for log messages.
Definition: Journal.h:58
std::uint64_t
ripple::LoadEvent
Definition: LoadEvent.h:36
ripple::LoadMonitor
Definition: LoadMonitor.h:36
ripple::LoadMonitor::LoadMonitor
LoadMonitor(beast::Journal j)
Definition: LoadMonitor.cpp:44
ripple::LoadMonitor::setTargetLatency
void setTargetLatency(std::chrono::milliseconds avg, std::chrono::milliseconds pk)
Definition: LoadMonitor.cpp:143
ripple::LoadMonitor::mLatencyMSAvg
std::chrono::milliseconds mLatencyMSAvg
Definition: LoadMonitor.h:80
ripple
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition: RCLCensorshipDetector.h:29
ripple::LoadMonitor::mLatencyMSPeak
std::chrono::milliseconds mLatencyMSPeak
Definition: LoadMonitor.h:81
ripple::LoadMonitor::mLatencyEvents
int mLatencyEvents
Definition: LoadMonitor.h:79
ripple::LoadMonitor::Stats::Stats
Stats()
Definition: LoadMonitor.cpp:37
ripple::LoadMonitor::mTargetLatencyPk
std::chrono::milliseconds mTargetLatencyPk
Definition: LoadMonitor.h:83
ripple::LoadMonitor::mCounts
std::uint64_t mCounts
Definition: LoadMonitor.h:78
mutex
ripple::LoadMonitor::Stats::latencyAvg
std::chrono::milliseconds latencyAvg
Definition: LoadMonitor.h:61
ripple::LoadMonitor::Stats::latencyPeak
std::chrono::milliseconds latencyPeak
Definition: LoadMonitor.h:62
ripple::LoadMonitor::addLoadSample
void addLoadSample(LoadEvent const &sample)
Definition: LoadMonitor.cpp:101