@peerbit/shared-log 4.0.11 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/esm/index.d.ts +8 -2
- package/lib/esm/index.js +70 -54
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/pid.d.ts +11 -2
- package/lib/esm/pid.js +50 -28
- package/lib/esm/pid.js.map +1 -1
- package/lib/esm/replication.d.ts +0 -1
- package/lib/esm/replication.js.map +1 -1
- package/lib/esm/role.d.ts +5 -5
- package/lib/esm/role.js +6 -10
- package/lib/esm/role.js.map +1 -1
- package/package.json +7 -7
- package/src/index.ts +110 -83
- package/src/pid.ts +57 -37
- package/src/replication.ts +0 -1
- package/src/role.ts +10 -16
package/lib/esm/pid.js
CHANGED
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
export class PIDReplicationController {
|
|
2
|
+
id;
|
|
2
3
|
integral;
|
|
3
4
|
prevError;
|
|
4
5
|
prevMemoryUsage;
|
|
5
|
-
|
|
6
|
+
prevTotalFactor;
|
|
6
7
|
kp;
|
|
7
8
|
ki;
|
|
8
9
|
kd;
|
|
9
10
|
errorFunction;
|
|
10
11
|
targetMemoryLimit;
|
|
11
|
-
constructor(options = {}) {
|
|
12
|
-
|
|
12
|
+
constructor(id, options = {}) {
|
|
13
|
+
this.id = id;
|
|
14
|
+
const { targetMemoryLimit, kp = 0.7, ki = 0.025, kd = 0.05, errorFunction = ({ balance, coverage, memory }) => {
|
|
15
|
+
return memory < 0
|
|
16
|
+
? memory * 0.9 + balance * 0.06 + coverage * 0.04
|
|
17
|
+
: balance * 0.6 + coverage * 0.4;
|
|
18
|
+
} } = options;
|
|
13
19
|
this.reset();
|
|
14
20
|
this.kp = kp;
|
|
15
21
|
this.ki = ki;
|
|
@@ -17,41 +23,48 @@ export class PIDReplicationController {
|
|
|
17
23
|
this.targetMemoryLimit = targetMemoryLimit;
|
|
18
24
|
this.errorFunction = errorFunction;
|
|
19
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Call this function on a period interval since it does not track time passed
|
|
28
|
+
* @param memoryUsage
|
|
29
|
+
* @param currentFactor
|
|
30
|
+
* @param totalFactor
|
|
31
|
+
* @param peerCount
|
|
32
|
+
* @returns
|
|
33
|
+
*/
|
|
20
34
|
async adjustReplicationFactor(memoryUsage, currentFactor, totalFactor, peerCount) {
|
|
35
|
+
const totalFactorDiff = totalFactor - this.prevTotalFactor;
|
|
36
|
+
this.prevTotalFactor = totalFactor;
|
|
21
37
|
this.prevMemoryUsage = memoryUsage;
|
|
22
38
|
const estimatedTotalSize = memoryUsage / currentFactor;
|
|
23
39
|
let errorMemory = 0;
|
|
24
|
-
const errorTarget = 1 / peerCount - currentFactor;
|
|
25
40
|
if (this.targetMemoryLimit != null) {
|
|
26
41
|
errorMemory =
|
|
27
42
|
currentFactor > 0 && memoryUsage > 0
|
|
28
43
|
? Math.max(Math.min(1, this.targetMemoryLimit / estimatedTotalSize), 0) - currentFactor
|
|
29
|
-
: 0
|
|
44
|
+
: 0;
|
|
30
45
|
}
|
|
31
46
|
const errorCoverageUnmodified = Math.min(1 - totalFactor, 1);
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
47
|
+
const errorCoverage = (this.targetMemoryLimit ? 1 - Math.sqrt(Math.abs(errorMemory)) : 1) *
|
|
48
|
+
errorCoverageUnmodified;
|
|
49
|
+
const errorFromEven = 1 / peerCount - currentFactor;
|
|
50
|
+
const balanceErrorScaler = this.targetMemoryLimit
|
|
51
|
+
? Math.abs(errorMemory)
|
|
52
|
+
: 1 - Math.abs(errorCoverage);
|
|
53
|
+
const errorBalance = (this.targetMemoryLimit ? errorMemory > -0.01 : true)
|
|
54
|
+
? errorFromEven > 0
|
|
55
|
+
? balanceErrorScaler * errorFromEven
|
|
56
|
+
: 0
|
|
57
|
+
: 0;
|
|
58
|
+
const totalError = this.errorFunction({
|
|
59
|
+
balance: errorBalance,
|
|
36
60
|
coverage: errorCoverage,
|
|
37
61
|
memory: errorMemory
|
|
38
62
|
});
|
|
39
|
-
|
|
40
|
-
totalError = this.errorFunction({
|
|
41
|
-
balance: errorTarget,
|
|
42
|
-
coverage: errorCoverageUnmodified,
|
|
43
|
-
memory: errorMemory
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
if (this.lastTs === 0) {
|
|
47
|
-
this.lastTs = +new Date();
|
|
48
|
-
}
|
|
49
|
-
const kpAdjusted = Math.min(Math.max(this.kp, (+new Date() - this.lastTs) / 100), 0.8);
|
|
50
|
-
const pTerm = kpAdjusted * totalError;
|
|
51
|
-
this.lastTs = +new Date();
|
|
63
|
+
const pTerm = this.kp * totalError;
|
|
52
64
|
// Integral term
|
|
53
65
|
this.integral += totalError;
|
|
54
|
-
|
|
66
|
+
// Beta controls how much of the accumulated error we should forget
|
|
67
|
+
const beta = 0.8;
|
|
55
68
|
this.integral = beta * totalError + (1 - beta) * this.integral;
|
|
56
69
|
const iTerm = this.ki * this.integral;
|
|
57
70
|
// Derivative term
|
|
@@ -65,19 +78,29 @@ export class PIDReplicationController {
|
|
|
65
78
|
if (newFactor < 0 || newFactor > 1) {
|
|
66
79
|
this.integral = 0;
|
|
67
80
|
}
|
|
81
|
+
// prevent drift when everone wants to do less
|
|
82
|
+
/* if (newFactor < currentFactor && totalFactorDiff < 0 && totalFactor < 0.5) {
|
|
83
|
+
newFactor = currentFactor;
|
|
84
|
+
this.integral = 0;
|
|
85
|
+
}
|
|
86
|
+
*/
|
|
68
87
|
/* console.log({
|
|
69
|
-
|
|
88
|
+
id: this.id,
|
|
70
89
|
currentFactor,
|
|
90
|
+
newFactor,
|
|
91
|
+
factorDiff: newFactor - currentFactor,
|
|
71
92
|
pTerm,
|
|
72
93
|
dTerm,
|
|
73
94
|
iTerm,
|
|
74
|
-
kpAdjusted,
|
|
75
95
|
totalError,
|
|
76
|
-
errorTarget,
|
|
96
|
+
errorTarget: errorBalance,
|
|
77
97
|
errorCoverage,
|
|
78
98
|
errorMemory,
|
|
79
99
|
peerCount,
|
|
80
|
-
totalFactor
|
|
100
|
+
totalFactor,
|
|
101
|
+
totalFactorDiff,
|
|
102
|
+
targetScaler: balanceErrorScaler,
|
|
103
|
+
estimatedTotalSize
|
|
81
104
|
}); */
|
|
82
105
|
return Math.max(Math.min(newFactor, 1), 0);
|
|
83
106
|
}
|
|
@@ -85,7 +108,6 @@ export class PIDReplicationController {
|
|
|
85
108
|
this.prevError = 0;
|
|
86
109
|
this.integral = 0;
|
|
87
110
|
this.prevMemoryUsage = 0;
|
|
88
|
-
this.lastTs = 0;
|
|
89
111
|
}
|
|
90
112
|
}
|
|
91
113
|
//# sourceMappingURL=pid.js.map
|
package/lib/esm/pid.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pid.js","sourceRoot":"","sources":["../../src/pid.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,wBAAwB;
|
|
1
|
+
{"version":3,"file":"pid.js","sourceRoot":"","sources":["../../src/pid.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/replication.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replication.js","sourceRoot":"","sources":["../../src/replication.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EACN,OAAO,EACP,WAAW,EACX,SAAS,EACT,KAAK,EACL,MAAM,EACN,YAAY,EACZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAwB,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"replication.js","sourceRoot":"","sources":["../../src/replication.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/role.d.ts
CHANGED
|
@@ -13,24 +13,24 @@ export declare const REPLICATOR_TYPE_VARIANT: Uint8Array;
|
|
|
13
13
|
declare class ReplicationSegment {
|
|
14
14
|
timestamp: bigint;
|
|
15
15
|
private factorNominator;
|
|
16
|
-
private offsetNominator
|
|
16
|
+
private offsetNominator;
|
|
17
17
|
constructor(properties: {
|
|
18
18
|
factor: number;
|
|
19
|
+
offset: number;
|
|
19
20
|
timestamp?: bigint;
|
|
20
|
-
offset?: number;
|
|
21
21
|
});
|
|
22
22
|
get factor(): number;
|
|
23
|
-
get offset(): number
|
|
23
|
+
get offset(): number;
|
|
24
24
|
}
|
|
25
25
|
export declare class Replicator extends Role {
|
|
26
26
|
segments: ReplicationSegment[];
|
|
27
27
|
constructor(properties: {
|
|
28
28
|
factor: number;
|
|
29
29
|
timestamp?: bigint;
|
|
30
|
-
offset
|
|
30
|
+
offset: number;
|
|
31
31
|
});
|
|
32
32
|
get factor(): number;
|
|
33
|
-
get offset(): number
|
|
33
|
+
get offset(): number;
|
|
34
34
|
get timestamp(): bigint;
|
|
35
35
|
equals(other: Role): boolean;
|
|
36
36
|
}
|
package/lib/esm/role.js
CHANGED
|
@@ -8,7 +8,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
8
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
9
|
};
|
|
10
10
|
var NoType_1, Observer_1, Replicator_1;
|
|
11
|
-
import { field,
|
|
11
|
+
import { field, variant, vec } from "@dao-xyz/borsh";
|
|
12
12
|
export class Role {
|
|
13
13
|
}
|
|
14
14
|
export const NO_TYPE_VARIANT = new Uint8Array([0]);
|
|
@@ -43,20 +43,16 @@ class ReplicationSegment {
|
|
|
43
43
|
}
|
|
44
44
|
this.timestamp = timestamp ?? BigInt(+new Date());
|
|
45
45
|
this.factorNominator = Math.round(4294967295 * factor);
|
|
46
|
-
if (offset
|
|
47
|
-
|
|
48
|
-
throw new Error("Expecting offset to be between 0 and 1, got: " + offset);
|
|
49
|
-
}
|
|
50
|
-
this.offsetNominator = Math.round(4294967295 * offset);
|
|
46
|
+
if (offset > 1 || offset < 0) {
|
|
47
|
+
throw new Error("Expecting offset to be between 0 and 1, got: " + offset);
|
|
51
48
|
}
|
|
49
|
+
this.offsetNominator = Math.round(4294967295 * offset);
|
|
52
50
|
}
|
|
53
51
|
get factor() {
|
|
54
52
|
return this.factorNominator / 4294967295;
|
|
55
53
|
}
|
|
56
54
|
get offset() {
|
|
57
|
-
return this.offsetNominator
|
|
58
|
-
? this.offsetNominator / 4294967295
|
|
59
|
-
: undefined;
|
|
55
|
+
return this.offsetNominator / 4294967295;
|
|
60
56
|
}
|
|
61
57
|
}
|
|
62
58
|
__decorate([
|
|
@@ -68,7 +64,7 @@ __decorate([
|
|
|
68
64
|
__metadata("design:type", Number)
|
|
69
65
|
], ReplicationSegment.prototype, "factorNominator", void 0);
|
|
70
66
|
__decorate([
|
|
71
|
-
field({ type:
|
|
67
|
+
field({ type: "u32" }),
|
|
72
68
|
__metadata("design:type", Number)
|
|
73
69
|
], ReplicationSegment.prototype, "offsetNominator", void 0);
|
|
74
70
|
let Replicator = Replicator_1 = class Replicator extends Role {
|
package/lib/esm/role.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"role.js","sourceRoot":"","sources":["../../src/role.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"role.js","sourceRoot":"","sources":["../../src/role.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@peerbit/shared-log",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0",
|
|
4
4
|
"description": "Shared log",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -31,15 +31,15 @@
|
|
|
31
31
|
"license": "MIT",
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"@dao-xyz/borsh": "^5.1.8",
|
|
34
|
-
"@peerbit/log": "3.0.
|
|
34
|
+
"@peerbit/log": "3.0.11",
|
|
35
35
|
"@peerbit/logger": "1.0.2",
|
|
36
|
-
"@peerbit/program": "3.0.
|
|
37
|
-
"@peerbit/rpc": "3.0.
|
|
38
|
-
"@peerbit/time": "2.0.
|
|
36
|
+
"@peerbit/program": "3.0.9",
|
|
37
|
+
"@peerbit/rpc": "3.0.11",
|
|
38
|
+
"@peerbit/time": "2.0.3",
|
|
39
39
|
"p-debounce": "^4.0.0"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
|
-
"@peerbit/test-utils": "^2.0.
|
|
42
|
+
"@peerbit/test-utils": "^2.0.11"
|
|
43
43
|
},
|
|
44
|
-
"gitHead": "
|
|
44
|
+
"gitHead": "22dee0eb271d2e5fad8e6be0528a7e1d84778eb8"
|
|
45
45
|
}
|