From 42ca7a5a5d0f6bfcc777aa9f2be73335ebd2e0f7 Mon Sep 17 00:00:00 2001 From: cgeek <cem.moreau@gmail.com> Date: Mon, 4 Dec 2017 17:45:56 +0100 Subject: [PATCH 1/3] [enh] Improve ecomode unit test + fix workers --- app/modules/prover/lib/powCluster.ts | 37 +++++++++++++--------------- test/integration/proof-of-work.js | 16 ++++++++---- 2 files changed, 28 insertions(+), 25 deletions(-) diff --git a/app/modules/prover/lib/powCluster.ts b/app/modules/prover/lib/powCluster.ts index 8e6e65843..15d8d24c3 100644 --- a/app/modules/prover/lib/powCluster.ts +++ b/app/modules/prover/lib/powCluster.ts @@ -185,27 +185,24 @@ export class Master { // Start the salves' job this.slaves.forEach((s:any, index) => { - if(index < stuff.newPoW.conf.nbCores) { - s.worker.send({ - uuid, - command: 'newPoW', - value: { - block: stuff.newPoW.block, - nonceBeginning: s.nonceBeginning, - zeros: stuff.newPoW.zeros, - highMark: stuff.newPoW.highMark, - pair: _.clone(stuff.newPoW.pair), - forcedTime: stuff.newPoW.forcedTime, - turnDuration: stuff.newPoW.turnDuration, - conf: { - medianTimeBlocks: stuff.newPoW.conf.medianTimeBlocks, - avgGenTime: stuff.newPoW.conf.avgGenTime, - cpu: stuff.newPoW.conf.cpu, - prefix: stuff.newPoW.conf.prefix - } + s.worker.send({ + uuid, + command: 'newPoW', + value: { + block: stuff.newPoW.block, + nonceBeginning: s.nonceBeginning, + zeros: stuff.newPoW.zeros, + highMark: stuff.newPoW.highMark, + pair: _.clone(stuff.newPoW.pair), + forcedTime: stuff.newPoW.forcedTime, + turnDuration: stuff.newPoW.turnDuration,conf: { + medianTimeBlocks: stuff.newPoW.conf.medianTimeBlocks, + avgGenTime: stuff.newPoW.conf.avgGenTime, + cpu: stuff.newPoW.conf.cpu, + prefix: stuff.newPoW.conf.prefix } - }) - } + } + }) }) return await this.currentPromise diff --git a/test/integration/proof-of-work.js b/test/integration/proof-of-work.js index dd507167a..4d61810e3 100644 --- a/test/integration/proof-of-work.js +++ b/test/integration/proof-of-work.js @@ -36,11 +36,10 @@ const prover = new BlockProver({ const now = 1474382274 * 1000; const MUST_START_WITH_A_ZERO = 16; const MUST_START_WITH_TWO_ZEROS = 32; -const MUST_START_WITH_THREE_ZEROS = 58; +const MUST_START_WITH_A_ZERO_AND_A_NUMBER = 22 describe("Proof-of-work", function() { - this.timeout(6*60000) it('should be able to find an easy PoW', () => co(function*() { let block = yield prover.prove({ issuer: 'HgTTJLAQ5sqfknMq7yLPZbehtuLSsKj9CxWN7k8QvYJd', @@ -53,12 +52,19 @@ describe("Proof-of-work", function() { })); it('should be reducing cpu when the PoW is too easy for the cpu', () => co(function*() { + prover.conf.nbCores = 2 + prover.conf.cpu = 0.9 + prover.conf.nbCores.should.equal(2) + prover.conf.cpu.should.equal(0.9) for(let i=0; i<8; ++i) { - let block = yield prover.prove({ + yield prover.prove({ issuer: 'HgTTJLAQ5sqfknMq7yLPZbehtuLSsKj9CxWN7k8QvYJd', - number: i+2 - }, MUST_START_WITH_THREE_ZEROS, now); + number: i+2, + now + }, MUST_START_WITH_A_ZERO_AND_A_NUMBER, now); } + prover.conf.nbCores.should.equal(1) + prover.conf.cpu.should.be.below(0.9) })); // Too randomly successing test // it('should be able to cancel a proof-of-work on other PoW receival', () => co(function*() { -- GitLab From 6959f9f19b888ccfc3acdcc6f4fe6320723a007a Mon Sep 17 00:00:00 2001 From: cgeek <cem.moreau@gmail.com> Date: Mon, 4 Dec 2017 17:50:56 +0100 Subject: [PATCH 2/3] [enh] Put constants in a ProverConstants --- app/modules/prover/lib/blockProver.ts | 4 ++-- app/modules/prover/lib/constants.ts | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/app/modules/prover/lib/blockProver.ts b/app/modules/prover/lib/blockProver.ts index 03676a8f4..f3e036770 100644 --- a/app/modules/prover/lib/blockProver.ts +++ b/app/modules/prover/lib/blockProver.ts @@ -201,12 +201,12 @@ export class BlockProver { this.logger.info('Done: #%s, %s in %ss instead of %ss (%s tests, ~%s tests/s)', block.number, proof.hash, (duration / 1000).toFixed(2), this.conf.avgGenTime, testsCount, testsPerSecond.toFixed(2)); this.logger.info('FOUND proof-of-work with %s leading zeros followed by [0-' + highMark + ']!', nbZeros); - if(this.conf.ecoMode === true && this.conf.nbCores*testsPerSecond > 300) { + if(this.conf.ecoMode === true && this.conf.nbCores*testsPerSecond > ProverConstants.ECO_MODE_MINIMAL_TESTS_PER_SECONDS) { if(this.conf.nbCores > 1) { this.logger.info("Reducing number of CPU cores "+this.conf.nbCores) this.conf.nbCores = this.conf.nbCores -1 } - else if(this.conf.cpu > 0.19){ + else if(this.conf.cpu > ProverConstants.ECO_MODE_MINIMAL_CPU){ let cpu:number = this.conf.cpu - 0.1 this.logger.info("Slowing down the CPU to "+cpu) this.changeCPU(cpu) diff --git a/app/modules/prover/lib/constants.ts b/app/modules/prover/lib/constants.ts index 2b8299c33..3a8d77c70 100644 --- a/app/modules/prover/lib/constants.ts +++ b/app/modules/prover/lib/constants.ts @@ -11,6 +11,9 @@ export const ProverConstants = { MIN_PEER_ID: 1, MAX_PEER_ID: 899, // Due to MAX_SAFE_INTEGER = 9007199254740991 (16 digits, and we use 11 digits for the nonce + 2 digits for core number => 3 digits for the peer, must be below 900) + ECO_MODE_MINIMAL_TESTS_PER_SECONDS: 300, + ECO_MODE_MINIMAL_CPU: 0.19, + NONCE_RANGE: 1000 * 1000 * 1000 * 100, POW_MAXIMUM_ACCEPTABLE_HANDICAP: 64, -- GitLab From 93c5b747d2eda594893a45da34bf3cbecc27278f Mon Sep 17 00:00:00 2001 From: cgeek <cem.moreau@gmail.com> Date: Mon, 4 Dec 2017 17:51:20 +0100 Subject: [PATCH 3/3] [enh] Eco mode should not be by default --- app/modules/prover/lib/constants.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/modules/prover/lib/constants.ts b/app/modules/prover/lib/constants.ts index 3a8d77c70..66dbe534b 100644 --- a/app/modules/prover/lib/constants.ts +++ b/app/modules/prover/lib/constants.ts @@ -5,7 +5,7 @@ export const ProverConstants = { MINIMAL_ZEROS_TO_SHOW_IN_LOGS: 3, POW_MINIMAL_TO_SHOW: 2, - DEFAULT_ECO_MODE: true, + DEFAULT_ECO_MODE: false, DEFAULT_CPU: 0.6, DEFAULT_PEER_ID: 1, MIN_PEER_ID: 1, -- GitLab