Skip to content

Commit 5aff8bf

Browse files
author
Maran
committed
Implement command line argument to set the amount of agents created by the miner
Defaults to the amount of cores available on the CPU
1 parent ee9df32 commit 5aff8bf

File tree

5 files changed

+23
-17
lines changed

5 files changed

+23
-17
lines changed

cmd/mist/flags.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ var (
6363
DebugFile string
6464
LogLevel int
6565
VmType int
66+
MinerThreads int
6667
)
6768

6869
// flags specific to gui client
@@ -137,6 +138,8 @@ func Init() {
137138
flag.StringVar(&BootNodes, "bootnodes", "", "space-separated node URLs for discovery bootstrap")
138139
flag.IntVar(&MaxPeer, "maxpeer", 30, "maximum desired peers")
139140

141+
flag.IntVar(&MinerThreads, "minerthreads", runtime.NumCPU(), "number of miner threads")
142+
140143
flag.Parse()
141144

142145
var err error

cmd/mist/main.go

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -52,19 +52,20 @@ func run() error {
5252
config := utils.InitConfig(VmType, ConfigFile, Datadir, "ETH")
5353

5454
ethereum, err := eth.New(&eth.Config{
55-
Name: p2p.MakeName(ClientIdentifier, Version),
56-
KeyStore: KeyStore,
57-
DataDir: Datadir,
58-
LogFile: LogFile,
59-
LogLevel: LogLevel,
60-
MaxPeers: MaxPeer,
61-
Port: OutboundPort,
62-
NAT: NAT,
63-
Shh: true,
64-
BootNodes: BootNodes,
65-
NodeKey: NodeKey,
66-
KeyRing: KeyRing,
67-
Dial: true,
55+
Name: p2p.MakeName(ClientIdentifier, Version),
56+
KeyStore: KeyStore,
57+
DataDir: Datadir,
58+
LogFile: LogFile,
59+
LogLevel: LogLevel,
60+
MaxPeers: MaxPeer,
61+
Port: OutboundPort,
62+
NAT: NAT,
63+
Shh: true,
64+
BootNodes: BootNodes,
65+
NodeKey: NodeKey,
66+
KeyRing: KeyRing,
67+
Dial: true,
68+
MinerThreads: MinerThreads,
6869
})
6970
if err != nil {
7071
mainlogger.Fatalln(err)

cmd/utils/cmd.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ func StartMining(ethereum *eth.Ethereum) bool {
225225
go func() {
226226
clilogger.Infoln("Start mining")
227227
if gminer == nil {
228-
gminer = miner.New(addr, ethereum)
228+
gminer = miner.New(addr, ethereum, 4)
229229
}
230230
gminer.Start()
231231
}()

eth/backend.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ type Config struct {
5353
Shh bool
5454
Dial bool
5555

56+
MinerThreads int
57+
5658
KeyManager *crypto.KeyManager
5759
}
5860

@@ -153,7 +155,7 @@ func New(config *Config) (*Ethereum, error) {
153155
eth.blockProcessor = core.NewBlockProcessor(db, eth.txPool, eth.chainManager, eth.EventMux())
154156
eth.chainManager.SetProcessor(eth.blockProcessor)
155157
eth.whisper = whisper.New()
156-
eth.miner = miner.New(keyManager.Address(), eth)
158+
eth.miner = miner.New(keyManager.Address(), eth, config.MinerThreads)
157159

158160
hasBlock := eth.chainManager.HasBlock
159161
insertChain := eth.chainManager.InsertChain

miner/miner.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@ type Miner struct {
2020
mining bool
2121
}
2222

23-
func New(coinbase []byte, eth core.Backend) *Miner {
23+
func New(coinbase []byte, eth core.Backend, minerThreads int) *Miner {
2424
miner := &Miner{
2525
Coinbase: coinbase,
2626
worker: newWorker(coinbase, eth),
2727
}
2828

29-
for i := 0; i < 4; i++ {
29+
for i := 0; i < minerThreads; i++ {
3030
miner.worker.register(NewCpuMiner(i, ezp.New()))
3131
}
3232

0 commit comments

Comments
 (0)