Skip to content

[Add] teranode dashboards#485

Merged
teracoder merged 4 commits into
bsv-blockchain:mainfrom
teracoder:feat/teranode-dashboards
May 26, 2026
Merged

[Add] teranode dashboards#485
teracoder merged 4 commits into
bsv-blockchain:mainfrom
teracoder:feat/teranode-dashboards

Conversation

@teracoder

Copy link
Copy Markdown
Contributor

Adds teranode dashboards to improve monitoring

@github-actions

github-actions Bot commented Feb 6, 2026

Copy link
Copy Markdown
Contributor

🤖 Claude Code Review

Status: Complete

Current Review:

This PR adds two Grafana dashboard JSON files to improve monitoring (4696 lines total). After static analysis, no critical issues found. The dashboards follow existing conventions and use standard Grafana format.

Observations:

  • Both JSON files are well-formed and follow existing dashboard patterns in the repository
  • Batch Index Dashboard uses ${DS_AEROSPIKE_PROMETHEUS} datasource variable, consistent with existing Aerospike dashboards
  • Overview Dashboard uses ${prometheus} variable for Teranode metrics, which appears to be a separate datasource
  • Panel descriptions provide clear "What Good Looks Like" guidance for operators
  • Metric queries use appropriate PromQL functions (rate, idelta, sum) with configurable intervals

Note: The Teranode metrics referenced in the overview dashboard (teranode_propagation_, teranode_tx_blaster_, teranode_blockassembly_*) were not found in the codebase during this review. If these metrics are exported by runtime services or external exporters, ensure they match the dashboard queries.

@sonarqubecloud

sonarqubecloud Bot commented Feb 6, 2026

Copy link
Copy Markdown

@github-actions

github-actions Bot commented May 14, 2026

Copy link
Copy Markdown
Contributor

Benchmark Comparison Report

Baseline: main (unknown)

Current: PR-485 (3093b98)

Summary

  • Regressions: 0
  • Improvements: 0
  • Unchanged: 142
  • Significance level: p < 0.05
All benchmark results (sec/op)
Benchmark Baseline Current Change p-value
_NewBlockFromBytes-4 1.552µ 1.565µ ~ 0.100
SplitSyncedParentMap_SetIfNotExists/256_buckets-4 71.14n 71.52n ~ 0.700
SplitSyncedParentMap_SetIfNotExists/16_buckets-4 71.22n 71.30n ~ 1.000
SplitSyncedParentMap_SetIfNotExists/1_bucket-4 71.20n 71.03n ~ 0.300
SplitSyncedParentMap_ConcurrentSetIfNotExists/256_buckets... 31.85n 32.42n ~ 0.100
SplitSyncedParentMap_ConcurrentSetIfNotExists/16_buckets_... 54.59n 54.74n ~ 1.000
SplitSyncedParentMap_ConcurrentSetIfNotExists/1_bucket_pa... 128.7n 130.5n ~ 0.400
MiningCandidate_Stringify_Short-4 224.5n 223.6n ~ 0.100
MiningCandidate_Stringify_Long-4 1.615µ 1.616µ ~ 1.000
MiningSolution_Stringify-4 835.8n 838.2n ~ 0.400
BlockInfo_MarshalJSON-4 1.711µ 1.714µ ~ 1.000
NewFromBytes-4 128.8n 125.1n ~ 0.100
Mine_EasyDifficulty-4 67.11µ 66.93µ ~ 0.700
Mine_WithAddress-4 6.899µ 7.645µ ~ 0.100
DirectSubtreeAdd/4_per_subtree-4 58.94n 58.90n ~ 1.000
DirectSubtreeAdd/64_per_subtree-4 28.25n 28.60n ~ 0.700
DirectSubtreeAdd/256_per_subtree-4 27.12n 27.61n ~ 0.100
DirectSubtreeAdd/1024_per_subtree-4 26.08n 26.30n ~ 0.100
DirectSubtreeAdd/2048_per_subtree-4 25.73n 25.86n ~ 0.100
SubtreeProcessorAdd/4_per_subtree-4 280.7n 282.1n ~ 1.000
SubtreeProcessorAdd/64_per_subtree-4 276.9n 274.3n ~ 0.600
SubtreeProcessorAdd/256_per_subtree-4 276.3n 274.9n ~ 0.700
SubtreeProcessorAdd/1024_per_subtree-4 271.1n 267.7n ~ 0.100
SubtreeProcessorAdd/2048_per_subtree-4 273.2n 267.5n ~ 0.100
SubtreeProcessorRotate/4_per_subtree-4 276.2n 273.8n ~ 0.200
SubtreeProcessorRotate/64_per_subtree-4 273.2n 273.8n ~ 0.400
SubtreeProcessorRotate/256_per_subtree-4 271.8n 274.2n ~ 0.100
SubtreeProcessorRotate/1024_per_subtree-4 271.1n 273.2n ~ 0.400
SubtreeNodeAddOnly/4_per_subtree-4 54.89n 54.41n ~ 0.700
SubtreeNodeAddOnly/64_per_subtree-4 34.30n 34.40n ~ 0.200
SubtreeNodeAddOnly/256_per_subtree-4 33.36n 33.39n ~ 1.000
SubtreeNodeAddOnly/1024_per_subtree-4 32.66n 32.91n ~ 0.200
SubtreeCreationOnly/4_per_subtree-4 114.6n 114.7n ~ 1.000
SubtreeCreationOnly/64_per_subtree-4 403.0n 402.2n ~ 1.000
SubtreeCreationOnly/256_per_subtree-4 1.350µ 1.443µ ~ 0.100
SubtreeCreationOnly/1024_per_subtree-4 4.414µ 4.432µ ~ 0.800
SubtreeCreationOnly/2048_per_subtree-4 8.172µ 8.345µ ~ 0.200
SubtreeProcessorOverheadBreakdown/64_per_subtree-4 269.9n 271.6n ~ 0.700
SubtreeProcessorOverheadBreakdown/1024_per_subtree-4 270.7n 272.9n ~ 0.100
ParallelGetAndSetIfNotExists/1k_nodes-4 603.2µ 821.5µ ~ 0.100
ParallelGetAndSetIfNotExists/10k_nodes-4 1.378m 1.581m ~ 0.100
ParallelGetAndSetIfNotExists/50k_nodes-4 6.735m 6.826m ~ 0.400
ParallelGetAndSetIfNotExists/100k_nodes-4 13.33m 13.43m ~ 0.100
SequentialGetAndSetIfNotExists/1k_nodes-4 679.9µ 659.7µ ~ 0.700
SequentialGetAndSetIfNotExists/10k_nodes-4 2.779m 2.900m ~ 0.100
SequentialGetAndSetIfNotExists/50k_nodes-4 10.58m 10.44m ~ 0.100
SequentialGetAndSetIfNotExists/100k_nodes-4 20.11m 20.09m ~ 0.400
ProcessOwnBlockSubtreeNodesParallel/1k_nodes-4 640.4µ 641.8µ ~ 0.400
ProcessOwnBlockSubtreeNodesParallel/10k_nodes-4 4.201m 4.218m ~ 0.400
ProcessOwnBlockSubtreeNodesParallel/100k_nodes-4 16.65m 16.64m ~ 1.000
ProcessOwnBlockSubtreeNodesSequential/1k_nodes-4 703.7µ 703.7µ ~ 1.000
ProcessOwnBlockSubtreeNodesSequential/10k_nodes-4 5.671m 5.805m ~ 0.100
ProcessOwnBlockSubtreeNodesSequential/100k_nodes-4 37.58m 38.08m ~ 0.100
DiskTxMap_SetIfNotExists-4 4.101µ 4.314µ ~ 0.400
DiskTxMap_SetIfNotExists_Parallel-4 3.755µ 3.879µ ~ 0.100
DiskTxMap_ExistenceOnly-4 516.9n 444.3n ~ 0.400
Queue-4 189.2n 190.5n ~ 0.400
AtomicPointer-4 3.627n 3.638n ~ 0.700
ReorgOptimizations/DedupFilterPipeline/Old/10K-4 839.7µ 856.3µ ~ 0.700
ReorgOptimizations/DedupFilterPipeline/New/10K-4 800.4µ 816.7µ ~ 0.400
ReorgOptimizations/AllMarkFalse/Old/10K-4 105.8µ 108.8µ ~ 0.100
ReorgOptimizations/AllMarkFalse/New/10K-4 64.25µ 64.62µ ~ 0.700
ReorgOptimizations/HashSlicePool/Old/10K-4 51.04µ 51.86µ ~ 1.000
ReorgOptimizations/HashSlicePool/New/10K-4 11.14µ 11.01µ ~ 0.400
ReorgOptimizations/NodeFlags/Old/10K-4 5.468µ 4.551µ ~ 0.100
ReorgOptimizations/NodeFlags/New/10K-4 2.274µ 1.560µ ~ 0.100
ReorgOptimizations/DedupFilterPipeline/Old/100K-4 10.114m 9.956m ~ 0.400
ReorgOptimizations/DedupFilterPipeline/New/100K-4 11.05m 10.53m ~ 0.100
ReorgOptimizations/AllMarkFalse/Old/100K-4 1.100m 1.093m ~ 1.000
ReorgOptimizations/AllMarkFalse/New/100K-4 707.5µ 707.8µ ~ 0.700
ReorgOptimizations/HashSlicePool/Old/100K-4 512.9µ 477.5µ ~ 0.100
ReorgOptimizations/HashSlicePool/New/100K-4 204.9µ 199.2µ ~ 0.100
ReorgOptimizations/NodeFlags/Old/100K-4 49.27µ 47.29µ ~ 0.700
ReorgOptimizations/NodeFlags/New/100K-4 15.80µ 16.39µ ~ 0.100
TxMapSetIfNotExists-4 47.03n 46.35n ~ 0.200
TxMapSetIfNotExistsDuplicate-4 39.06n 38.78n ~ 0.200
ChannelSendReceive-4 598.5n 626.1n ~ 0.100
BlockAssembler_AddTx-4 0.03060n 0.02850n ~ 1.000
AddNode-4 12.18 11.82 ~ 0.700
AddNodeWithMap-4 12.37 12.07 ~ 0.100
CalcBlockWork-4 504.6n 502.8n ~ 0.700
CalculateWork-4 682.2n 675.6n ~ 0.100
BuildBlockLocatorString_Helpers/Size_10-4 1.389µ 1.767µ ~ 0.100
BuildBlockLocatorString_Helpers/Size_100-4 13.09µ 13.16µ ~ 0.700
BuildBlockLocatorString_Helpers/Size_1000-4 131.1µ 130.6µ ~ 0.400
CatchupWithHeaderCache-4 104.3m 104.2m ~ 0.100
_BufferPoolAllocation/16KB-4 4.612µ 3.496µ ~ 0.100
_BufferPoolAllocation/32KB-4 8.546µ 8.470µ ~ 0.700
_BufferPoolAllocation/64KB-4 14.72µ 18.32µ ~ 0.200
_BufferPoolAllocation/128KB-4 28.23µ 29.83µ ~ 0.100
_BufferPoolAllocation/512KB-4 100.3µ 116.8µ ~ 0.100
_BufferPoolConcurrent/32KB-4 18.02µ 19.35µ ~ 0.700
_BufferPoolConcurrent/64KB-4 29.65µ 27.76µ ~ 0.100
_BufferPoolConcurrent/512KB-4 142.8µ 142.4µ ~ 1.000
_SubtreeDeserializationWithBufferSizes/16KB-4 616.4µ 630.0µ ~ 0.100
_SubtreeDeserializationWithBufferSizes/32KB-4 644.3µ 635.3µ ~ 0.700
_SubtreeDeserializationWithBufferSizes/64KB-4 632.6µ 603.8µ ~ 0.100
_SubtreeDeserializationWithBufferSizes/128KB-4 657.9µ 614.8µ ~ 0.100
_SubtreeDeserializationWithBufferSizes/512KB-4 655.9µ 627.5µ ~ 0.100
_SubtreeDataDeserializationWithBufferSizes/16KB-4 36.19m 36.48m ~ 0.400
_SubtreeDataDeserializationWithBufferSizes/32KB-4 36.23m 36.47m ~ 0.100
_SubtreeDataDeserializationWithBufferSizes/64KB-4 36.14m 36.75m ~ 0.200
_SubtreeDataDeserializationWithBufferSizes/128KB-4 35.83m 36.59m ~ 0.100
_SubtreeDataDeserializationWithBufferSizes/512KB-4 35.95m 36.37m ~ 0.200
_PooledVsNonPooled/Pooled-4 737.5n 739.8n ~ 0.100
_PooledVsNonPooled/NonPooled-4 6.843µ 6.657µ ~ 0.400
_MemoryFootprint/Current_512KB_32concurrent-4 6.945µ 6.927µ ~ 1.000
_MemoryFootprint/Proposed_32KB_32concurrent-4 9.507µ 10.200µ ~ 0.100
_MemoryFootprint/Alternative_64KB_32concurrent-4 9.033µ 9.521µ ~ 0.100
_prepareTxsPerLevel-4 410.7m 403.4m ~ 0.400
_prepareTxsPerLevelOrdered-4 3.865m 3.457m ~ 0.700
_prepareTxsPerLevel_Comparison/Original-4 413.4m 418.2m ~ 0.400
_prepareTxsPerLevel_Comparison/Optimized-4 3.538m 3.471m ~ 0.200
SubtreeSizes/10k_tx_4_per_subtree-4 1.405m 1.382m ~ 0.400
SubtreeSizes/10k_tx_16_per_subtree-4 335.4µ 328.4µ ~ 0.200
SubtreeSizes/10k_tx_64_per_subtree-4 79.39µ 78.81µ ~ 0.400
SubtreeSizes/10k_tx_256_per_subtree-4 19.78µ 19.83µ ~ 0.700
SubtreeSizes/10k_tx_512_per_subtree-4 9.749µ 9.792µ ~ 0.400
SubtreeSizes/10k_tx_1024_per_subtree-4 4.858µ 4.848µ ~ 0.700
SubtreeSizes/10k_tx_2k_per_subtree-4 2.420µ 2.418µ ~ 1.000
BlockSizeScaling/10k_tx_64_per_subtree-4 77.11µ 77.11µ ~ 1.000
BlockSizeScaling/10k_tx_256_per_subtree-4 19.44µ 19.36µ ~ 1.000
BlockSizeScaling/10k_tx_1024_per_subtree-4 4.859µ 4.879µ ~ 0.700
BlockSizeScaling/50k_tx_64_per_subtree-4 410.6µ 404.2µ ~ 0.400
BlockSizeScaling/50k_tx_256_per_subtree-4 96.49µ 96.27µ ~ 0.200
BlockSizeScaling/50k_tx_1024_per_subtree-4 24.07µ 24.04µ ~ 1.000
SubtreeAllocations/small_subtrees_exists_check-4 163.2µ 165.2µ ~ 0.200
SubtreeAllocations/small_subtrees_data_fetch-4 170.5µ 166.7µ ~ 0.100
SubtreeAllocations/small_subtrees_full_validation-4 336.7µ 335.4µ ~ 1.000
SubtreeAllocations/medium_subtrees_exists_check-4 9.728µ 9.670µ ~ 0.200
SubtreeAllocations/medium_subtrees_data_fetch-4 9.882µ 10.003µ ~ 0.100
SubtreeAllocations/medium_subtrees_full_validation-4 19.65µ 19.59µ ~ 1.000
SubtreeAllocations/large_subtrees_exists_check-4 2.352µ 2.331µ ~ 0.400
SubtreeAllocations/large_subtrees_data_fetch-4 2.430µ 2.427µ ~ 1.000
SubtreeAllocations/large_subtrees_full_validation-4 4.863µ 4.854µ ~ 1.000
StoreBlock_Sequential/BelowCSVHeight-4 333.1µ 334.2µ ~ 0.400
StoreBlock_Sequential/AboveCSVHeight-4 333.8µ 331.8µ ~ 1.000
GetUtxoHashes-4 251.4n 253.2n ~ 1.000
GetUtxoHashes_ManyOutputs-4 49.39µ 49.27µ ~ 1.000
_NewMetaDataFromBytes-4 239.3n 243.4n ~ 0.400
_Bytes-4 633.3n 635.9n ~ 0.500
_MetaBytes-4 588.7n 583.2n ~ 0.300

Threshold: >10% with p < 0.05 | Generated: 2026-05-14 08:52 UTC

@sonarqubecloud

Copy link
Copy Markdown

@teracoder teracoder merged commit 50822d9 into bsv-blockchain:main May 26, 2026
25 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants