1
0
Fork 0
mirror of https://github.com/ton-blockchain/ton synced 2025-03-09 15:40:10 +00:00

Improve validator session stats (#1117)

* Improve validator session stats

* Collator stats: block limits, number of processed external messages
* Collator and validator work time
* Last key block seqno
* Approvers and signers

* End validator session stats
This commit is contained in:
SpyCheese 2024-08-20 19:54:16 +03:00 committed by GitHub
parent 5bdcb5e2ce
commit 9c3dc22b78
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
21 changed files with 373 additions and 27 deletions

View file

@ -38,6 +38,7 @@
#include <map>
#include <set>
#include <list>
#include <queue>
namespace ton {
@ -261,7 +262,7 @@ class ValidatorManagerImpl : public ValidatorManager {
BlockSeqno last_key_block_seqno,
const validatorsession::ValidatorSessionOptions &opts);
td::actor::ActorOwn<ValidatorGroup> create_validator_group(ValidatorSessionId session_id, ShardIdFull shard,
td::Ref<ValidatorSet> validator_set,
td::Ref<ValidatorSet> validator_set, BlockSeqno key_seqno,
validatorsession::ValidatorSessionOptions opts,
bool create_catchain);
struct ValidatorGroupEntry {
@ -589,6 +590,7 @@ class ValidatorManagerImpl : public ValidatorManager {
void log_validator_session_stats(BlockIdExt block_id, validatorsession::ValidatorSessionStats stats) override;
void log_new_validator_group_stats(validatorsession::NewValidatorGroupStats stats) override;
void log_end_validator_group_stats(validatorsession::EndValidatorGroupStats stats) override;
void update_options(td::Ref<ValidatorManagerOptions> opts) override;
@ -708,6 +710,21 @@ class ValidatorManagerImpl : public ValidatorManager {
td::uint32 ls_stats_check_ext_messages_{0};
td::actor::ActorOwn<CandidatesBuffer> candidates_buffer_;
struct RecordedBlockStats {
double collator_work_time_ = -1.0;
double collator_cpu_work_time_ = -1.0;
td::optional<CollationStats> collator_stats_;
double validator_work_time_ = -1.0;
double validator_cpu_work_time_ = -1.0;
};
std::map<BlockIdExt, RecordedBlockStats> recorded_block_stats_;
std::queue<BlockIdExt> recorded_block_stats_lru_;
void record_collate_query_stats(BlockIdExt block_id, double work_time, double cpu_work_time,
CollationStats stats) override;
void record_validate_query_stats(BlockIdExt block_id, double work_time, double cpu_work_time) override;
RecordedBlockStats &new_block_stats_record(BlockIdExt block_id);
};
} // namespace validator