From f60b9f0b2f6b468982417aad8a53c0261856100c Mon Sep 17 00:00:00 2001 From: Aurora Gaffney Date: Sat, 13 Jul 2024 07:59:14 -0500 Subject: [PATCH] feat: make hash rate display interval configurable --- internal/config/config.go | 12 +++++++----- internal/miner/worker.go | 15 ++++++++------- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/internal/config/config.go b/internal/config/config.go index abc8f4e..cc82598 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -29,7 +29,7 @@ type Config struct { Indexer IndexerConfig `yaml:"indexer"` Submit SubmitConfig `yaml:"submit"` Wallet WalletConfig `yaml:"wallet"` - Worker WorkerConfig `yaml:"worker"` + Miner MinerConfig `yaml:"miner"` Logging LoggingConfig `yaml:"logging"` Metrics MetricsConfig `yaml:"metrics"` Debug DebugConfig `yaml:"debug"` @@ -61,8 +61,9 @@ type WalletConfig struct { Mnemonic string `yaml:"mnemonic" envconfig:"MNEMONIC"` } -type WorkerConfig struct { - Count int `yaml:"count" envconfig:"WORKER_COUNT"` +type MinerConfig struct { + WorkerCount int `yaml:"workers" envconfig:"WORKER_COUNT"` + HashRateInterval int `yaml:"hashRateInterval" envconfig:"HASH_RATE_INTERVAL"` } type LoggingConfig struct { @@ -100,8 +101,9 @@ var globalConfig = &Config{ }, // The default worker config is somewhat conservative: worker count is set // to half of the available logical CPUs - Worker: WorkerConfig{ - Count: runtime.NumCPU() / 2, + Miner: MinerConfig{ + WorkerCount: runtime.NumCPU() / 2, + HashRateInterval: 60, }, Network: "mainnet", Profile: "tuna-v1", diff --git a/internal/miner/worker.go b/internal/miner/worker.go index f197394..b33f7fb 100644 --- a/internal/miner/worker.go +++ b/internal/miner/worker.go @@ -26,8 +26,7 @@ import ( ) const ( - hashRateLogInterval = 60 * time.Second - restartTimeout = 2 * time.Minute + restartTimeout = 2 * time.Minute ) type Manager struct { @@ -49,7 +48,7 @@ var globalManager = &Manager{} func (m *Manager) Reset() { m.workerWaitGroup = sync.WaitGroup{} m.doneChan = make(chan any) - m.resultChan = make(chan Result, config.GetConfig().Worker.Count) + m.resultChan = make(chan Result, config.GetConfig().Miner.WorkerCount) } func (m *Manager) Stop() { @@ -100,8 +99,8 @@ func (m *Manager) Start(blockData any) { m.scheduleHashRateLog() // Start workers m.Reset() - logger.Infof("starting %d workers", cfg.Worker.Count) - for i := 0; i < cfg.Worker.Count; i++ { + logger.Infof("starting %d workers", cfg.Miner.WorkerCount) + for i := 0; i < cfg.Miner.WorkerCount; i++ { miner := New( &(m.workerWaitGroup), m.resultChan, @@ -130,10 +129,12 @@ func (m *Manager) Start(blockData any) { } func (m *Manager) scheduleHashRateLog() { - m.hashLogTimer = time.AfterFunc(hashRateLogInterval, m.hashRateLog) + cfg := config.GetConfig() + m.hashLogTimer = time.AfterFunc(time.Duration(cfg.Miner.HashRateInterval)*time.Second, m.hashRateLog) } func (m *Manager) hashRateLog() { + cfg := config.GetConfig() logger := logging.GetLogger() hashCount := m.hashCounter.Load() // Handle counter rollover @@ -144,7 +145,7 @@ func (m *Manager) hashRateLog() { } hashCountDiff := hashCount - m.hashLogLastCount m.hashLogLastCount = hashCount - secondDivisor := uint64(hashRateLogInterval / time.Second) + secondDivisor := uint64(cfg.Miner.HashRateInterval) hashCountPerSec := hashCountDiff / secondDivisor logger.Infof("hash rate: %d/s", hashCountPerSec) m.scheduleHashRateLog()