xrpld
Loading...
Searching...
No Matches
xrpl::perf::PerfLogImp Class Reference

Implementation class for PerfLog. More...

#include <PerfLogImp.h>

Inheritance diagram for xrpl::perf::PerfLogImp:
Collaboration diagram for xrpl::perf::PerfLogImp:

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 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_ {xrpl::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 54 of file PerfLogImp.h.

Member Typedef Documentation

◆ steady_clock

Definition at line 33 of file PerfLog.h.

◆ system_clock

Definition at line 34 of file PerfLog.h.

◆ steady_time_point

◆ system_time_point

◆ seconds

Definition at line 37 of file PerfLog.h.

◆ milliseconds

Definition at line 38 of file PerfLog.h.

◆ microseconds

Definition at line 39 of file PerfLog.h.

Constructor & Destructor Documentation

◆ PerfLogImp()

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

Definition at line 299 of file PerfLogImp.cpp.

◆ ~PerfLogImp()

xrpl::perf::PerfLogImp::~PerfLogImp ( )
override

Definition at line 309 of file PerfLogImp.cpp.

Member Function Documentation

◆ openLog()

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

Definition at line 213 of file PerfLogImp.cpp.

◆ run()

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

Definition at line 246 of file PerfLogImp.cpp.

◆ report()

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

Definition at line 270 of file PerfLogImp.cpp.

◆ rpcEnd()

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

Definition at line 335 of file PerfLogImp.cpp.

◆ rpcStart()

void xrpl::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 xrpl::perf::PerfLog.

Definition at line 315 of file PerfLogImp.cpp.

◆ rpcFinish()

void xrpl::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 xrpl::perf::PerfLog.

Definition at line 144 of file PerfLogImp.h.

◆ rpcError()

void xrpl::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 xrpl::perf::PerfLog.

Definition at line 150 of file PerfLogImp.h.

◆ jobQueue()

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

Log queued job.

Parameters
typeJob type

Implements xrpl::perf::PerfLog.

Definition at line 375 of file PerfLogImp.cpp.

◆ jobStart()

void xrpl::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 xrpl::perf::PerfLog.

Definition at line 390 of file PerfLogImp.cpp.

◆ jobFinish()

void xrpl::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 xrpl::perf::PerfLog.

Definition at line 416 of file PerfLogImp.cpp.

◆ countersJson()

json::Value xrpl::perf::PerfLogImp::countersJson ( ) const
overridevirtual

Render performance counters in Json.

Returns
Counters Json object

Implements xrpl::perf::PerfLog.

Definition at line 164 of file PerfLogImp.h.

◆ currentJson()

json::Value xrpl::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 xrpl::perf::PerfLog.

Definition at line 170 of file PerfLogImp.h.

◆ resizeJobs()

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

Ensure enough room to store each currently executing job.

Parameters
resizeNumber of JobQueue worker threads

Implements xrpl::perf::PerfLog.

Definition at line 438 of file PerfLogImp.cpp.

◆ rotate()

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

Rotate perf log file.

Implements xrpl::perf::PerfLog.

Definition at line 446 of file PerfLogImp.cpp.

◆ start()

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

Reimplemented from xrpl::perf::PerfLog.

Definition at line 457 of file PerfLogImp.cpp.

◆ stop()

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

Reimplemented from xrpl::perf::PerfLog.

Definition at line 464 of file PerfLogImp.cpp.

Member Data Documentation

◆ setup_

Setup const xrpl::perf::PerfLogImp::setup_
private

Definition at line 108 of file PerfLogImp.h.

◆ app_

Application& xrpl::perf::PerfLogImp::app_
private

Definition at line 109 of file PerfLogImp.h.

◆ j_

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

Definition at line 110 of file PerfLogImp.h.

◆ signalStop_

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

Definition at line 111 of file PerfLogImp.h.

◆ counters_

Counters xrpl::perf::PerfLogImp::counters_ {xrpl::rpc::getHandlerNames(), JobTypes::instance()}
private

Definition at line 112 of file PerfLogImp.h.

◆ logFile_

std::ofstream xrpl::perf::PerfLogImp::logFile_
private

Definition at line 113 of file PerfLogImp.h.

◆ thread_

std::thread xrpl::perf::PerfLogImp::thread_
private

Definition at line 114 of file PerfLogImp.h.

◆ mutex_

std::mutex xrpl::perf::PerfLogImp::mutex_
private

Definition at line 115 of file PerfLogImp.h.

◆ cond_

std::condition_variable xrpl::perf::PerfLogImp::cond_
private

Definition at line 116 of file PerfLogImp.h.

◆ lastLog_

system_time_point xrpl::perf::PerfLogImp::lastLog_
private

Definition at line 117 of file PerfLogImp.h.

◆ hostname_

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

Definition at line 118 of file PerfLogImp.h.

◆ stop_

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

Definition at line 119 of file PerfLogImp.h.

◆ rotate_

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

Definition at line 120 of file PerfLogImp.h.