rippled
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
ripple::perf::PerfLogImp Class Reference

Implementation class for PerfLog. More...

#include <PerfLogImp.h>

Inheritance diagram for ripple::perf::PerfLogImp:
Inheritance graph
[legend]
Collaboration diagram for ripple::perf::PerfLogImp:
Collaboration graph
[legend]

Classes

struct  Counters
 Track performance counters and currently executing tasks. More...
 

Public Types

using steady_clock = std::chrono::steady_clock
 
using system_clock = std::chrono::system_clock
 
using steady_time_point = std::chrono::time_point< steady_clock >
 
using system_time_point = std::chrono::time_point< system_clock >
 
using seconds = std::chrono::seconds
 
using milliseconds = std::chrono::milliseconds
 
using microseconds = std::chrono::microseconds
 

Public Member Functions

 PerfLogImp (Setup const &setup, Application &app, beast::Journal journal, std::function< void()> &&signalStop)
 
 ~PerfLogImp () override
 
void rpcStart (std::string const &method, std::uint64_t const requestId) override
 Log start of RPC call.
 
void rpcFinish (std::string const &method, std::uint64_t const requestId) override
 Log successful finish of RPC call.
 
void rpcError (std::string const &method, std::uint64_t const requestId) override
 Log errored RPC call.
 
void jobQueue (JobType const type) override
 Log queued job.
 
void jobStart (JobType const type, microseconds dur, steady_time_point startTime, int instance) override
 Log job executing.
 
void jobFinish (JobType const type, microseconds dur, int instance) override
 Log job finishing.
 
Json::Value countersJson () const override
 Render performance counters in Json.
 
Json::Value currentJson () const override
 Render currently executing jobs and RPC calls and durations in Json.
 
void resizeJobs (int const resize) override
 Ensure enough room to store each currently executing job.
 
void rotate () override
 Rotate perf log file.
 
void start () override
 
void stop () override
 

Private Member Functions

void openLog ()
 
void run ()
 
void report ()
 
void rpcEnd (std::string const &method, std::uint64_t const requestId, bool finish)
 

Private Attributes

Setup const setup_
 
Applicationapp_
 
beast::Journal const j_
 
std::function< void()> const signalStop_
 
Counters counters_ {ripple::RPC::getHandlerNames(), JobTypes::instance()}
 
std::ofstream logFile_
 
std::thread thread_
 
std::mutex mutex_
 
std::condition_variable cond_
 
system_time_point lastLog_
 
std::string const hostname_ {boost::asio::ip::host_name()}
 
bool stop_ {false}
 
bool rotate_ {false}
 

Detailed Description

Implementation class for PerfLog.

Definition at line 67 of file PerfLogImp.h.

Member Typedef Documentation

◆ steady_clock

Definition at line 54 of file PerfLog.h.

◆ system_clock

Definition at line 55 of file PerfLog.h.

◆ steady_time_point

Definition at line 56 of file PerfLog.h.

◆ system_time_point

Definition at line 57 of file PerfLog.h.

◆ seconds

Definition at line 58 of file PerfLog.h.

◆ milliseconds

Definition at line 59 of file PerfLog.h.

◆ microseconds

Definition at line 60 of file PerfLog.h.

Constructor & Destructor Documentation

◆ PerfLogImp()

ripple::perf::PerfLogImp::PerfLogImp ( Setup const &  setup,
Application app,
beast::Journal  journal,
std::function< void()> &&  signalStop 
)

Definition at line 311 of file PerfLogImp.cpp.

◆ ~PerfLogImp()

ripple::perf::PerfLogImp::~PerfLogImp ( )
override

Definition at line 321 of file PerfLogImp.cpp.

Member Function Documentation

◆ openLog()

void ripple::perf::PerfLogImp::openLog ( )
private

Definition at line 224 of file PerfLogImp.cpp.

◆ run()

void ripple::perf::PerfLogImp::run ( )
private

Definition at line 258 of file PerfLogImp.cpp.

◆ report()

void ripple::perf::PerfLogImp::report ( )
private

Definition at line 283 of file PerfLogImp.cpp.

◆ rpcEnd()

void ripple::perf::PerfLogImp::rpcEnd ( std::string const &  method,
std::uint64_t const  requestId,
bool  finish 
)
private

Definition at line 346 of file PerfLogImp.cpp.

◆ rpcStart()

void ripple::perf::PerfLogImp::rpcStart ( std::string const &  method,
std::uint64_t const  requestId 
)
overridevirtual

Log start of RPC call.

Parameters
methodRPC command
requestIdUnique identifier to track command

Implements ripple::perf::PerfLog.

Definition at line 327 of file PerfLogImp.cpp.

◆ rpcFinish()

void ripple::perf::PerfLogImp::rpcFinish ( std::string const &  method,
std::uint64_t const  requestId 
)
overridevirtual

Log successful finish of RPC call.

Parameters
methodRPC command
requestIdUnique identifier to track command

Implements ripple::perf::PerfLog.

Definition at line 160 of file PerfLogImp.h.

◆ rpcError()

void ripple::perf::PerfLogImp::rpcError ( std::string const &  method,
std::uint64_t const  requestId 
)
overridevirtual

Log errored RPC call.

Parameters
methodRPC command
requestIdUnique identifier to track command

Implements ripple::perf::PerfLog.

Definition at line 166 of file PerfLogImp.h.

◆ jobQueue()

void ripple::perf::PerfLogImp::jobQueue ( JobType const  type)
overridevirtual

Log queued job.

Parameters
typeJob type

Implements ripple::perf::PerfLog.

Definition at line 382 of file PerfLogImp.cpp.

◆ jobStart()

void ripple::perf::PerfLogImp::jobStart ( JobType const  type,
microseconds  dur,
steady_time_point  startTime,
int  instance 
)
overridevirtual

Log job executing.

Parameters
typeJob type
durDuration enqueued in microseconds
startTimeTime that execution began
instanceJobQueue worker thread instance

Implements ripple::perf::PerfLog.

Definition at line 396 of file PerfLogImp.cpp.

◆ jobFinish()

void ripple::perf::PerfLogImp::jobFinish ( JobType const  type,
microseconds  dur,
int  instance 
)
overridevirtual

Log job finishing.

Parameters
typeJob type
durDuration running in microseconds
instanceJobqueue worker thread instance

Implements ripple::perf::PerfLog.

Definition at line 420 of file PerfLogImp.cpp.

◆ countersJson()

Json::Value ripple::perf::PerfLogImp::countersJson ( ) const
overridevirtual

Render performance counters in Json.

Returns
Counters Json object

Implements ripple::perf::PerfLog.

Definition at line 183 of file PerfLogImp.h.

◆ currentJson()

Json::Value ripple::perf::PerfLogImp::currentJson ( ) const
overridevirtual

Render currently executing jobs and RPC calls and durations in Json.

Returns
Current executing jobs and RPC calls and durations

Implements ripple::perf::PerfLog.

Definition at line 189 of file PerfLogImp.h.

◆ resizeJobs()

void ripple::perf::PerfLogImp::resizeJobs ( int const  resize)
overridevirtual

Ensure enough room to store each currently executing job.

Parameters
resizeNumber of JobQueue worker threads

Implements ripple::perf::PerfLog.

Definition at line 440 of file PerfLogImp.cpp.

◆ rotate()

void ripple::perf::PerfLogImp::rotate ( )
overridevirtual

Rotate perf log file.

Implements ripple::perf::PerfLog.

Definition at line 448 of file PerfLogImp.cpp.

◆ start()

void ripple::perf::PerfLogImp::start ( )
overridevirtual

Reimplemented from ripple::perf::PerfLog.

Definition at line 459 of file PerfLogImp.cpp.

◆ stop()

void ripple::perf::PerfLogImp::stop ( )
overridevirtual

Reimplemented from ripple::perf::PerfLog.

Definition at line 466 of file PerfLogImp.cpp.

Member Data Documentation

◆ setup_

Setup const ripple::perf::PerfLogImp::setup_
private

Definition at line 121 of file PerfLogImp.h.

◆ app_

Application& ripple::perf::PerfLogImp::app_
private

Definition at line 122 of file PerfLogImp.h.

◆ j_

beast::Journal const ripple::perf::PerfLogImp::j_
private

Definition at line 123 of file PerfLogImp.h.

◆ signalStop_

std::function<void()> const ripple::perf::PerfLogImp::signalStop_
private

Definition at line 124 of file PerfLogImp.h.

◆ counters_

Counters ripple::perf::PerfLogImp::counters_ {ripple::RPC::getHandlerNames(), JobTypes::instance()}
private

Definition at line 125 of file PerfLogImp.h.

◆ logFile_

std::ofstream ripple::perf::PerfLogImp::logFile_
private

Definition at line 126 of file PerfLogImp.h.

◆ thread_

std::thread ripple::perf::PerfLogImp::thread_
private

Definition at line 127 of file PerfLogImp.h.

◆ mutex_

std::mutex ripple::perf::PerfLogImp::mutex_
private

Definition at line 128 of file PerfLogImp.h.

◆ cond_

std::condition_variable ripple::perf::PerfLogImp::cond_
private

Definition at line 129 of file PerfLogImp.h.

◆ lastLog_

system_time_point ripple::perf::PerfLogImp::lastLog_
private

Definition at line 130 of file PerfLogImp.h.

◆ hostname_

std::string const ripple::perf::PerfLogImp::hostname_ {boost::asio::ip::host_name()}
private

Definition at line 131 of file PerfLogImp.h.

◆ stop_

bool ripple::perf::PerfLogImp::stop_ {false}
private

Definition at line 132 of file PerfLogImp.h.

◆ rotate_

bool ripple::perf::PerfLogImp::rotate_ {false}
private

Definition at line 133 of file PerfLogImp.h.