@overkill-dev/run 0.0.78 → 0.0.79
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/bench/benchmark-host-snapshot.d.ts +18 -0
- package/bench/benchmark-host-snapshot.d.ts.map +1 -1
- package/bench/benchmark-host-snapshot.js +20 -0
- package/bench/benchmark-host-snapshot.js.map +1 -1
- package/bench/benchmark-run-report.js +13 -5
- package/bench/benchmark-run-report.js.map +1 -1
- package/config/config.d.ts.map +1 -1
- package/config/config.js +1 -0
- package/config/config.js.map +1 -1
- package/config/schema.d.ts +8 -0
- package/config/schema.d.ts.map +1 -1
- package/config/schema.js +1 -0
- package/config/schema.js.map +1 -1
- package/config/snapshot.js +1 -0
- package/config/snapshot.js.map +1 -1
- package/config/types.d.ts +2 -0
- package/config/types.d.ts.map +1 -1
- package/config/validation.js +5 -0
- package/config/validation.js.map +1 -1
- package/engine/benchmark-garbage-collection.d.ts +13 -0
- package/engine/benchmark-garbage-collection.d.ts.map +1 -0
- package/engine/benchmark-garbage-collection.js +4 -0
- package/engine/benchmark-garbage-collection.js.map +1 -0
- package/engine/benchmark-node.d.ts +3 -0
- package/engine/benchmark-node.d.ts.map +1 -1
- package/engine/benchmark-result.d.ts +63 -0
- package/engine/benchmark-result.d.ts.map +1 -1
- package/engine/benchmark-result.js +2 -0
- package/engine/benchmark-result.js.map +1 -0
- package/engine/case-body-execution.js +43 -1
- package/engine/case-body-execution.js.map +1 -1
- package/engine/case-execution.d.ts.map +1 -1
- package/engine/case-execution.js +8 -37
- package/engine/case-execution.js.map +1 -1
- package/engine/execution-options.d.ts.map +1 -1
- package/engine/execution-options.js +2 -2
- package/engine/execution-options.js.map +1 -1
- package/engine/execution-supervision-state.js +6 -0
- package/engine/execution-supervision-state.js.map +1 -1
- package/engine/execution-supervision.d.ts +2 -0
- package/engine/execution-supervision.d.ts.map +1 -1
- package/engine/execution-supervision.js +2 -7
- package/engine/execution-supervision.js.map +1 -1
- package/engine/execution.d.ts.map +1 -1
- package/engine/execution.js +2 -1
- package/engine/execution.js.map +1 -1
- package/package.json +2 -1
- package/packages/run/run.entry-point.d.ts +3 -2
- package/packages/run/run.entry-point.d.ts.map +1 -1
- package/readme.md +11 -5
- package/run/benchmark-definition-schema.js +2 -1
- package/run/benchmark-definition-schema.js.map +1 -1
- package/run/benchmark-execution-environment.js +21 -0
- package/run/benchmark-execution-environment.js.map +1 -0
- package/run/benchmark-garbage-collection.js +29 -0
- package/run/benchmark-garbage-collection.js.map +1 -0
- package/run/benchmark-placement.js +101 -0
- package/run/benchmark-placement.js.map +1 -0
- package/run/benchmark-report-metadata.js +4 -2
- package/run/benchmark-report-metadata.js.map +1 -1
- package/run/benchmark-result-schema.js +87 -18
- package/run/benchmark-result-schema.js.map +1 -1
- package/run/collected-placement.js +85 -0
- package/run/collected-placement.js.map +1 -0
- package/run/default-run-engine.js +1 -0
- package/run/default-run-engine.js.map +1 -1
- package/run/execution-session-supervised.js +13 -2
- package/run/execution-session-supervised.js.map +1 -1
- package/run/node-run-execution.js +1 -0
- package/run/node-run-execution.js.map +1 -1
- package/run/run-collected-planning.js +19 -61
- package/run/run-collected-planning.js.map +1 -1
- package/run/run-collected-resolution.js +3 -1
- package/run/run-collected-resolution.js.map +1 -1
- package/run/run-command-schema.js +1 -0
- package/run/run-command-schema.js.map +1 -1
- package/run/run-facts.js +23 -8
- package/run/run-facts.js.map +1 -1
- package/run/run-host-process.js +1 -1
- package/run/run-host-process.js.map +1 -1
- package/run/run-isolated-command.js +2 -0
- package/run/run-isolated-command.js.map +1 -1
- package/run/run-local-planning.js +4 -0
- package/run/run-local-planning.js.map +1 -1
- package/run/run-types.d.ts +4 -2
- package/run/run-types.d.ts.map +1 -1
- package/run/run-types.js.map +1 -1
- package/run/supervised-child-execution.js +7 -1
- package/run/supervised-child-execution.js.map +1 -1
- package/run/supervised-child-process.js +1 -1
- package/run/supervised-child-process.js.map +1 -1
- package/run/supervised-child.js +1 -1
- package/run/supervised-child.js.map +1 -1
- package/run/supervised-protocol.js.map +1 -1
- package/run/worker-execution-engine.js +21 -0
- package/run/worker-execution-engine.js.map +1 -0
- package/run/worker-pool-command.js +1 -0
- package/run/worker-pool-command.js.map +1 -1
- package/run/worker-pool-lanes.js +1 -1
- package/run/worker-pool-lanes.js.map +1 -1
- package/run/worker-pool-placement-planning.js +3 -2
- package/run/worker-pool-placement-planning.js.map +1 -1
- package/run/worker-pool-protocol.js.map +1 -1
- package/run/worker-pool-worker.js +3 -15
- package/run/worker-pool-worker.js.map +1 -1
- package/software-bill-of-materials.cyclonedx.json +4 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"benchmark-execution-environment.js","sourceRoot":"","sources":["../../../../source/run/benchmark-execution-environment.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,mCAAmC,CAC/C,MAA+C,EAC/C,QAA2D;IAE3D,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,OAAO,GAAG,UAAU,CAAC,EAAE,CAAC;IAC9B,OAAO;QACH,wBAAwB,EAAE,MAAM;QAChC,iBAAiB,EAAE,QAAQ,KAAK,QAAQ,IAAI,OAAO,OAAO,KAAK,UAAU;YACrE,CAAC,CAAC;gBACE,IAAI,EAAE,WAAW;gBACjB,OAAO;oBACH,OAAO,EAAE,CAAC;gBACd,CAAC;aACJ;YACD,CAAC,CAAC;gBACE,IAAI,EAAE,aAAa;gBACnB,MAAM,EAAE,8FAA8F;aACzG;KACR,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { resolveBenchmarkGarbageCollection } from "../engine/benchmark-garbage-collection.js";
|
|
2
|
+
import { invalidRequest } from "./run-errors.js";
|
|
3
|
+
function requiresGarbageCollection(cases, profile) {
|
|
4
|
+
return cases.some(function requestsCollection({ testCase }) {
|
|
5
|
+
const request = testCase.benchmark?.lifecycle?.garbageCollection ?? 'off';
|
|
6
|
+
return testCase.skipReason === null && resolveBenchmarkGarbageCollection(request, profile) === 'after-sample';
|
|
7
|
+
});
|
|
8
|
+
}
|
|
9
|
+
function garbageCollectionArguments(nodeArguments) {
|
|
10
|
+
if (nodeArguments.some(function disablesGarbageCollection(argument) {
|
|
11
|
+
return /^--no[-_]?expose[-_]gc$/u.test(argument);
|
|
12
|
+
})) {
|
|
13
|
+
invalidRequest('Requested benchmark garbage collection conflicts with a GC-disable host argument.');
|
|
14
|
+
}
|
|
15
|
+
const exposed = nodeArguments.some(function exposesGarbageCollection(argument) {
|
|
16
|
+
return argument.replaceAll('_', '-') === '--expose-gc';
|
|
17
|
+
});
|
|
18
|
+
return exposed ? nodeArguments : [...nodeArguments, '--expose-gc'];
|
|
19
|
+
}
|
|
20
|
+
export function resolveBenchmarkGarbageCollectionHost(hostProcess, profile, cases) {
|
|
21
|
+
if (!requiresGarbageCollection(cases, profile)) {
|
|
22
|
+
return hostProcess;
|
|
23
|
+
}
|
|
24
|
+
return {
|
|
25
|
+
kind: 'child',
|
|
26
|
+
nodeArguments: garbageCollectionArguments(hostProcess.kind === 'child' ? hostProcess.nodeArguments : [])
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=benchmark-garbage-collection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"benchmark-garbage-collection.js","sourceRoot":"","sources":["../../../../source/run/benchmark-garbage-collection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iCAAiC,EAAE,MAAM,2CAA2C,CAAC;AAI9F,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAIjD,SAAS,yBAAyB,CAAC,KAAqB,EAAE,OAAyC;IAC/F,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,kBAAkB,CAAC,EAAE,QAAQ,EAAE;QACtD,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,iBAAiB,IAAI,KAAK,CAAC;QAC1E,OAAO,QAAQ,CAAC,UAAU,KAAK,IAAI,IAAI,iCAAiC,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,cAAc,CAAC;IAClH,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,0BAA0B,CAAC,aAAgC;IAChE,IACI,aAAa,CAAC,IAAI,CAAC,SAAS,yBAAyB,CAAC,QAAQ;QAC1D,OAAO,0BAA0B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrD,CAAC,CAAC,EACJ,CAAC;QACC,cAAc,CAAC,mFAAmF,CAAC,CAAC;IACxG,CAAC;IACD,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,SAAS,wBAAwB,CAAC,QAAQ;QACzE,OAAO,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,aAAa,CAAC;IAC3D,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAE,GAAG,aAAa,EAAE,aAAa,CAAE,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,qCAAqC,CACjD,WAAwB,EACxB,OAAyC,EACzC,KAAqB;IAErB,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;QAC7C,OAAO,WAAW,CAAC;IACvB,CAAC;IACD,OAAO;QACH,IAAI,EAAE,OAAO;QACb,aAAa,EAAE,0BAA0B,CAAC,WAAW,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;KAC3G,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
const timingMetrics = new Set(['durationMicroseconds', 'operationsPerSecond']);
|
|
2
|
+
const percentScale = 100;
|
|
3
|
+
function parallelMeasurement(definition) {
|
|
4
|
+
if (definition?.kind !== 'bundle-size' || definition.measurement.collectors.length > 0) {
|
|
5
|
+
return false;
|
|
6
|
+
}
|
|
7
|
+
const metrics = [
|
|
8
|
+
...definition.diagnostics,
|
|
9
|
+
...Object.values(definition.budgets).flatMap(function budgetMetrics(budgets) {
|
|
10
|
+
return budgets.map(function metric(budget) {
|
|
11
|
+
return budget.metric;
|
|
12
|
+
});
|
|
13
|
+
})
|
|
14
|
+
];
|
|
15
|
+
return metrics.every(function artifactMetric(name) {
|
|
16
|
+
return !timingMetrics.has(name);
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
function validPercentage(reading) {
|
|
20
|
+
return reading.availability === 'available' && Number.isFinite(reading.value) &&
|
|
21
|
+
reading.value >= 0 && reading.value <= percentScale;
|
|
22
|
+
}
|
|
23
|
+
function validCount(reading) {
|
|
24
|
+
return reading.availability === 'available' && Number.isSafeInteger(reading.value) && reading.value > 0;
|
|
25
|
+
}
|
|
26
|
+
function platformPressure(snapshot) {
|
|
27
|
+
const readings = snapshot.runtime.operatingSystem === 'linux'
|
|
28
|
+
? [
|
|
29
|
+
snapshot.signals.linuxCpuStallPercent,
|
|
30
|
+
snapshot.signals.linuxMemoryStallPercent,
|
|
31
|
+
snapshot.signals.linuxIoStallPercent
|
|
32
|
+
]
|
|
33
|
+
: [];
|
|
34
|
+
const throttling = snapshot.runtime.operatingSystem === 'darwin'
|
|
35
|
+
? [snapshot.signals.darwinCpuSpeedPercent, snapshot.signals.darwinCpuSchedulerPercent]
|
|
36
|
+
: [];
|
|
37
|
+
return readings.some(function stalled(reading) {
|
|
38
|
+
return reading.availability === 'available' && (!validPercentage(reading) || reading.value > 0);
|
|
39
|
+
}) || throttling.some(function throttled(reading) {
|
|
40
|
+
return reading.availability === 'available' && (!validPercentage(reading) || reading.value < percentScale);
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
function observedLoad(reading) {
|
|
44
|
+
if (reading.availability === 'unavailable') {
|
|
45
|
+
return 0;
|
|
46
|
+
}
|
|
47
|
+
const load = reading.value[0];
|
|
48
|
+
return Number.isFinite(load) && load >= 0 ? load : null;
|
|
49
|
+
}
|
|
50
|
+
function cpuHeadroom(snapshot) {
|
|
51
|
+
const { availableParallelism, logicalCpuCount } = snapshot.capacity;
|
|
52
|
+
const { cpuBusyPercent } = snapshot.signals;
|
|
53
|
+
if (!validCount(availableParallelism) || !validCount(logicalCpuCount) || !validPercentage(cpuBusyPercent)) {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
const load = observedLoad(snapshot.capacity.loadAverage);
|
|
57
|
+
if (load === null) {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
const demand = Math.max(logicalCpuCount.value * cpuBusyPercent.value / percentScale, load);
|
|
61
|
+
return Math.max(1, Math.floor(availableParallelism.value - demand - 1));
|
|
62
|
+
}
|
|
63
|
+
function hostLimits(host) {
|
|
64
|
+
if (host === null) {
|
|
65
|
+
return [{ reason: 'uncalibrated', maximumWorkers: 1 }];
|
|
66
|
+
}
|
|
67
|
+
const { snapshot } = host;
|
|
68
|
+
const maximumWorkers = cpuHeadroom(snapshot);
|
|
69
|
+
const { availableMemoryPercent } = snapshot.signals;
|
|
70
|
+
if (maximumWorkers === null || !validPercentage(availableMemoryPercent)) {
|
|
71
|
+
return [{ reason: 'host-evidence', maximumWorkers: 1 }];
|
|
72
|
+
}
|
|
73
|
+
return [
|
|
74
|
+
{ reason: 'cpu-headroom', maximumWorkers },
|
|
75
|
+
...availableMemoryPercent.value === 0
|
|
76
|
+
? [{ reason: 'memory-pressure', maximumWorkers: 1 }]
|
|
77
|
+
: [],
|
|
78
|
+
...platformPressure(snapshot)
|
|
79
|
+
? [{ reason: 'platform-pressure', maximumWorkers: 1 }]
|
|
80
|
+
: []
|
|
81
|
+
];
|
|
82
|
+
}
|
|
83
|
+
export function resolveBenchmarkPlacement(input) {
|
|
84
|
+
const limits = [
|
|
85
|
+
...input.definitions.every(parallelMeasurement)
|
|
86
|
+
? []
|
|
87
|
+
: [{ reason: 'measurement', maximumWorkers: 1 }],
|
|
88
|
+
...hostLimits(input.host),
|
|
89
|
+
...input.processModel === 'supervised-process'
|
|
90
|
+
? [{ reason: 'process-model', maximumWorkers: 1 }]
|
|
91
|
+
: []
|
|
92
|
+
];
|
|
93
|
+
return {
|
|
94
|
+
policy: 'conservative-size-only-v1',
|
|
95
|
+
maximumWorkers: Math.min(...limits.map(function maximum(limit) {
|
|
96
|
+
return limit.maximumWorkers;
|
|
97
|
+
})),
|
|
98
|
+
limits
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=benchmark-placement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"benchmark-placement.js","sourceRoot":"","sources":["../../../../source/run/benchmark-placement.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,8 +32,9 @@ export function withBenchmarkRunMetadata(result, facts, capturedAtMicroseconds)
|
|
|
32
32
|
return result;
|
|
33
33
|
}
|
|
34
34
|
const metadata = {
|
|
35
|
-
version:
|
|
35
|
+
version: 3,
|
|
36
36
|
host: facts.benchmarkHost,
|
|
37
|
+
placement: facts.benchmarkPlacement,
|
|
37
38
|
node: facts.environment.node,
|
|
38
39
|
calibration: facts.benchmarkCalibration,
|
|
39
40
|
execution: {
|
|
@@ -53,8 +54,9 @@ export function withBenchmarkErrorMetadata(result, command, host) {
|
|
|
53
54
|
return result;
|
|
54
55
|
}
|
|
55
56
|
const metadata = {
|
|
56
|
-
version:
|
|
57
|
+
version: 3,
|
|
57
58
|
host,
|
|
59
|
+
placement: null,
|
|
58
60
|
node: { arch: process.arch, platform: process.platform, version: process.version },
|
|
59
61
|
calibration: null,
|
|
60
62
|
execution: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"benchmark-report-metadata.js","sourceRoot":"","sources":["../../../../source/run/benchmark-report-metadata.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"benchmark-report-metadata.js","sourceRoot":"","sources":["../../../../source/run/benchmark-report-metadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,26 @@
|
|
|
1
1
|
import { z } from 'zod/v4';
|
|
2
|
+
import { benchmarkLifecycleVersion } from "../engine/benchmark-result.js";
|
|
2
3
|
import { workloadIdSchema } from "../engine/identity-schema.js";
|
|
3
4
|
import { minimumInferentialSamples, maximumRetainedSamples } from "../engine/benchmark-limits.js";
|
|
5
|
+
const minimumCooldownMilliseconds = 100;
|
|
6
|
+
const maximumCooldownMilliseconds = 60_000;
|
|
7
|
+
const legacyLifecyclePolicySchema = z.strictObject({
|
|
8
|
+
warmupSamples: z.number().int().min(0).max(maximumRetainedSamples),
|
|
9
|
+
cooldown: z.discriminatedUnion('mode', [
|
|
10
|
+
z.strictObject({ mode: z.literal('off') }),
|
|
11
|
+
z.strictObject({
|
|
12
|
+
mode: z.literal('runtime'),
|
|
13
|
+
maximumEventLoopUtilization: z.number().min(0).max(1),
|
|
14
|
+
timeoutMilliseconds: z.number().int().gt(minimumCooldownMilliseconds).max(maximumCooldownMilliseconds)
|
|
15
|
+
})
|
|
16
|
+
])
|
|
17
|
+
});
|
|
18
|
+
export const benchmarkLifecyclePolicySchema = legacyLifecyclePolicySchema.extend({
|
|
19
|
+
garbageCollection: z.enum(['off', 'after-sample', 'profile-default']).default('off')
|
|
20
|
+
});
|
|
21
|
+
const resolvedLifecyclePolicySchema = legacyLifecyclePolicySchema.extend({
|
|
22
|
+
garbageCollection: z.enum(['off', 'after-sample'])
|
|
23
|
+
});
|
|
4
24
|
export const budgetStatisticSchema = z.discriminatedUnion('kind', [
|
|
5
25
|
z.strictObject({ kind: z.literal('quantile'), probability: z.number().gt(0).lt(1) }),
|
|
6
26
|
z.strictObject({ kind: z.literal('mean'), range: z.strictObject({ minimum: z.number(), maximum: z.number() }) }),
|
|
@@ -14,25 +34,78 @@ export const samplingPolicySchema = z.strictObject({
|
|
|
14
34
|
minimumSamples: z.number().int().min(minimumInferentialSamples),
|
|
15
35
|
maximumSamples: z.number().int().min(minimumInferentialSamples).max(maximumRetainedSamples)
|
|
16
36
|
});
|
|
37
|
+
const metricSummarySchema = z.strictObject({
|
|
38
|
+
count: z.number().int().nonnegative(),
|
|
39
|
+
minimum: z.number().nullable(),
|
|
40
|
+
maximum: z.number().nullable(),
|
|
41
|
+
mean: z.number().nullable(),
|
|
42
|
+
median: z.number().nullable(),
|
|
43
|
+
provenance: z.strictObject({
|
|
44
|
+
collector: z.string(),
|
|
45
|
+
scope: z.enum(['region', 'thread', 'process', 'runtime', 'custom']),
|
|
46
|
+
unit: z.string()
|
|
47
|
+
}),
|
|
48
|
+
unavailableReasons: z.array(z.string())
|
|
49
|
+
});
|
|
50
|
+
const rawSamplesSchema = z.strictObject({
|
|
51
|
+
status: z.enum(['recorded', 'omitted', 'truncated']),
|
|
52
|
+
reference: z.string().nullable(),
|
|
53
|
+
reason: z.string().nullable()
|
|
54
|
+
});
|
|
55
|
+
const legacyLifecycleResultSchema = z.strictObject({
|
|
56
|
+
version: z.literal(1),
|
|
57
|
+
policy: legacyLifecyclePolicySchema,
|
|
58
|
+
warmup: z.strictObject({
|
|
59
|
+
samples: z.number().int().nonnegative(),
|
|
60
|
+
metrics: z.record(z.string(), metricSummarySchema),
|
|
61
|
+
rawSamples: rawSamplesSchema
|
|
62
|
+
}),
|
|
63
|
+
cleanup: z.strictObject({ callbacks: z.number().int().nonnegative(), failures: z.number().int().nonnegative() }),
|
|
64
|
+
cooldown: z.discriminatedUnion('mode', [
|
|
65
|
+
z.strictObject({ mode: z.literal('off') }),
|
|
66
|
+
z.strictObject({
|
|
67
|
+
mode: z.literal('runtime'),
|
|
68
|
+
strategy: z.literal('event-loop-utilization-v1'),
|
|
69
|
+
completed: z.number().int().nonnegative(),
|
|
70
|
+
windows: z.number().int().nonnegative(),
|
|
71
|
+
durationMicroseconds: z.number().nonnegative(),
|
|
72
|
+
lastUtilization: z.number().min(0).max(1).nullable(),
|
|
73
|
+
outcome: z.enum(['pending', 'settled', 'timed-out', 'cancelled', 'unavailable'])
|
|
74
|
+
})
|
|
75
|
+
])
|
|
76
|
+
});
|
|
77
|
+
const lifecycleResultSchema = z.union([
|
|
78
|
+
legacyLifecycleResultSchema.extend({
|
|
79
|
+
version: z.literal(benchmarkLifecycleVersion),
|
|
80
|
+
policy: resolvedLifecyclePolicySchema,
|
|
81
|
+
garbageCollection: z
|
|
82
|
+
.discriminatedUnion('mode', [
|
|
83
|
+
z.strictObject({ mode: z.literal('off') }),
|
|
84
|
+
z.strictObject({
|
|
85
|
+
mode: z.literal('after-sample'),
|
|
86
|
+
completed: z.number().int().nonnegative(),
|
|
87
|
+
failures: z.number().int().nonnegative()
|
|
88
|
+
})
|
|
89
|
+
])
|
|
90
|
+
.nullable()
|
|
91
|
+
}),
|
|
92
|
+
legacyLifecycleResultSchema.transform(function historicalGarbageCollection(value) {
|
|
93
|
+
return {
|
|
94
|
+
...value,
|
|
95
|
+
version: benchmarkLifecycleVersion,
|
|
96
|
+
policy: { ...value.policy, garbageCollection: 'off' },
|
|
97
|
+
garbageCollection: null
|
|
98
|
+
};
|
|
99
|
+
})
|
|
100
|
+
]);
|
|
17
101
|
export const benchmarkResultSchema = z.strictObject({
|
|
102
|
+
lifecycle: lifecycleResultSchema.nullable().default(null),
|
|
18
103
|
workload: workloadIdSchema,
|
|
19
104
|
policy: samplingPolicySchema,
|
|
20
105
|
samples: z.number().int().nonnegative(),
|
|
21
106
|
status: z.enum(['sampling', 'complete', 'incomplete']),
|
|
22
107
|
assumption: z.literal('independent-stationary-observations'),
|
|
23
|
-
metrics: z.record(z.string(),
|
|
24
|
-
count: z.number().int().nonnegative(),
|
|
25
|
-
minimum: z.number().nullable(),
|
|
26
|
-
maximum: z.number().nullable(),
|
|
27
|
-
mean: z.number().nullable(),
|
|
28
|
-
median: z.number().nullable(),
|
|
29
|
-
provenance: z.strictObject({
|
|
30
|
-
collector: z.string(),
|
|
31
|
-
scope: z.enum(['region', 'thread', 'process', 'runtime', 'custom']),
|
|
32
|
-
unit: z.string()
|
|
33
|
-
}),
|
|
34
|
-
unavailableReasons: z.array(z.string())
|
|
35
|
-
})),
|
|
108
|
+
metrics: z.record(z.string(), metricSummarySchema),
|
|
36
109
|
budgets: z.array(z.strictObject({
|
|
37
110
|
metric: z.string(),
|
|
38
111
|
statistic: budgetStatisticSchema,
|
|
@@ -43,10 +116,6 @@ export const benchmarkResultSchema = z.strictObject({
|
|
|
43
116
|
precise: z.boolean(),
|
|
44
117
|
decision: z.enum(['pass', 'fail', 'undecided', 'unavailable'])
|
|
45
118
|
})),
|
|
46
|
-
rawSamples:
|
|
47
|
-
status: z.enum(['recorded', 'omitted', 'truncated']),
|
|
48
|
-
reference: z.string().nullable(),
|
|
49
|
-
reason: z.string().nullable()
|
|
50
|
-
})
|
|
119
|
+
rawSamples: rawSamplesSchema
|
|
51
120
|
});
|
|
52
121
|
//# sourceMappingURL=benchmark-result-schema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"benchmark-result-schema.js","sourceRoot":"","sources":["../../../../source/run/benchmark-result-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"benchmark-result-schema.js","sourceRoot":"","sources":["../../../../source/run/benchmark-result-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { emptyWorkUnitResourceConstraints } from "./run-types.js";
|
|
2
|
+
import { collectedRunCaseEntriesFromWorkUnits, createWorkerPoolPlacementResolution } from "./worker-pool-placement-planning.js";
|
|
3
|
+
import { workUnitsFromCollectedPlan } from "./work-unit-planning.js";
|
|
4
|
+
function fileSetForDiscoveredFiles(files) {
|
|
5
|
+
const fileSets = new Map(files.map(function toFileSetEntry(file) {
|
|
6
|
+
return [file.file, file.fileSet];
|
|
7
|
+
}));
|
|
8
|
+
return function fileSetForFile(file) {
|
|
9
|
+
return file === null ? null : fileSets.get(file) ?? null;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
function workerPoolAssignmentPolicy(profile) {
|
|
13
|
+
return profile.execution.processModel === 'worker-pool'
|
|
14
|
+
? profile.execution.assignmentPolicy
|
|
15
|
+
: 'case-count-balanced';
|
|
16
|
+
}
|
|
17
|
+
function workDistribution(profile) {
|
|
18
|
+
return profile.execution.processModel === 'worker-pool'
|
|
19
|
+
? profile.execution.workDistribution
|
|
20
|
+
: { mode: 'file' };
|
|
21
|
+
}
|
|
22
|
+
function workerLifecycle(profile) {
|
|
23
|
+
return profile.execution.processModel === 'worker-pool'
|
|
24
|
+
? profile.execution.workerLifecycle
|
|
25
|
+
: 'reuse';
|
|
26
|
+
}
|
|
27
|
+
function profileMaximumWorkers(profile) {
|
|
28
|
+
return profile.execution.processModel === 'worker-pool'
|
|
29
|
+
? profile.execution.maxWorkers
|
|
30
|
+
: null;
|
|
31
|
+
}
|
|
32
|
+
function selectedBenchmarkDefinition(entry) {
|
|
33
|
+
const summary = entry.testCase.benchmark;
|
|
34
|
+
const workload = entry.workId.workload?.name;
|
|
35
|
+
if (summary === null || workload === undefined) {
|
|
36
|
+
return summary;
|
|
37
|
+
}
|
|
38
|
+
const budgets = summary.budgets[workload];
|
|
39
|
+
return budgets === undefined ? null : { ...summary, budgets: { [workload]: budgets } };
|
|
40
|
+
}
|
|
41
|
+
export async function benchmarkPlacementForCases(input, entries) {
|
|
42
|
+
if (input.profile.testFamily !== 'benchmark') {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
const { resolveBenchmarkPlacement } = await import("./benchmark-placement.js");
|
|
46
|
+
return resolveBenchmarkPlacement({
|
|
47
|
+
definitions: entries.map(selectedBenchmarkDefinition),
|
|
48
|
+
host: input.benchmarkHost,
|
|
49
|
+
processModel: input.profile.execution.processModel
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
export async function createPlacementResolution(input, shardHasher) {
|
|
53
|
+
if (input.planKind !== 'worker-pool') {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
const units = workUnitsFromCollectedPlan({
|
|
57
|
+
runConstraints: emptyWorkUnitResourceConstraints,
|
|
58
|
+
fileSetForFile: fileSetForDiscoveredFiles(input.files),
|
|
59
|
+
order: input.request.order,
|
|
60
|
+
seed: input.request.seed,
|
|
61
|
+
selectedPlan: input.collectedPlan,
|
|
62
|
+
shard: input.request.shard,
|
|
63
|
+
shardHasher,
|
|
64
|
+
scheduling: input.profile.execution.scheduling,
|
|
65
|
+
workDistribution: workDistribution(input.profile),
|
|
66
|
+
workerLifecycle: workerLifecycle(input.profile)
|
|
67
|
+
});
|
|
68
|
+
const entries = collectedRunCaseEntriesFromWorkUnits(input.collectedPlan, units);
|
|
69
|
+
const benchmarkPlacement = await benchmarkPlacementForCases(input, entries);
|
|
70
|
+
return {
|
|
71
|
+
...createWorkerPoolPlacementResolution({
|
|
72
|
+
units,
|
|
73
|
+
maximumWorkers: benchmarkPlacement?.maximumWorkers ?? null,
|
|
74
|
+
assignmentPolicy: workerPoolAssignmentPolicy(input.profile),
|
|
75
|
+
availableParallelism: input.dependencies.availableParallelism,
|
|
76
|
+
durationHistoryIndex: input.durationHistoryIndex,
|
|
77
|
+
nowMilliseconds: input.dependencies.wallClock.currentUnixEpochMilliseconds,
|
|
78
|
+
profileMaximumWorkers: profileMaximumWorkers(input.profile),
|
|
79
|
+
requestedWorkers: input.request.workers,
|
|
80
|
+
selectedPlan: input.collectedPlan
|
|
81
|
+
}),
|
|
82
|
+
benchmarkPlacement
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=collected-placement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collected-placement.js","sourceRoot":"","sources":["../../../../source/run/collected-placement.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-run-engine.js","sourceRoot":"","sources":["../../../../source/run/default-run-engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAwC,MAAM,qBAAqB,CAAC;AAClG,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,SAAS,eAAe,CAAC,IAAY;IACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,uBAAuB;IAC5B,OAAO,OAAO,CAAC,sBAAsB,EAAE,CAAC;AAC5C,CAAC;AAED,SAAS,wBAAwB;IAC7B,MAAM,SAAS,GAAG,WAAW,EAAE,CAAC;IAEhC,OAAO;QACH,OAAO,EAAE,aAAa,CAAC;YACnB,oBAAoB,EAAE,SAAS;YAC/B,uBAAuB;YACvB,kBAAkB,EAAE,wBAAwB,CAAC;gBACzC,MAAM,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE;gBACtC,MAAM,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE;gBACtC,SAAS;aACZ,CAAC;YACF,SAAS;SACZ,CAAC;QACF,SAAS;KACZ,CAAC;AACN,CAAC;AAED,MAAM,MAAM,GAAG,qBAAqB,CAAC,wBAAwB,EAAE,EAAE,oBAAoB,EAAE,CAAC,CAAC;AAEzF,MAAM,CAAC,MAAM,gBAAgB,GAAW;IACpC,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;IACrD,uBAAuB,EAAE,MAAM,CAAC,uBAAuB;IACvD,UAAU,EAAE,MAAM,CAAC,UAAU;IAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;IAC/B,qBAAqB,EAAE,MAAM,CAAC,qBAAqB;IACnD,WAAW,EAAE,MAAM,CAAC,WAAW;IAC/B,cAAc,EAAE,MAAM,CAAC,cAAc;IACrC,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;IACrD,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;IACrD,cAAc,EAAE,MAAM,CAAC,cAAc;IACrC,2BAA2B,EAAE,MAAM,CAAC,2BAA2B;IAC/D,OAAO,EAAE,MAAM,CAAC,OAAO;IACvB,YAAY;IACZ,YAAY,EAAE,MAAM,CAAC,YAAY;CACpC,CAAC"}
|
|
1
|
+
{"version":3,"file":"default-run-engine.js","sourceRoot":"","sources":["../../../../source/run/default-run-engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAwC,MAAM,qBAAqB,CAAC;AAClG,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,SAAS,eAAe,CAAC,IAAY;IACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,uBAAuB;IAC5B,OAAO,OAAO,CAAC,sBAAsB,EAAE,CAAC;AAC5C,CAAC;AAED,SAAS,wBAAwB;IAC7B,MAAM,SAAS,GAAG,WAAW,EAAE,CAAC;IAEhC,OAAO;QACH,OAAO,EAAE,aAAa,CAAC;YACnB,oBAAoB,EAAE,IAAI;YAC1B,oBAAoB,EAAE,SAAS;YAC/B,uBAAuB;YACvB,kBAAkB,EAAE,wBAAwB,CAAC;gBACzC,MAAM,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE;gBACtC,MAAM,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE;gBACtC,SAAS;aACZ,CAAC;YACF,SAAS;SACZ,CAAC;QACF,SAAS;KACZ,CAAC;AACN,CAAC;AAED,MAAM,MAAM,GAAG,qBAAqB,CAAC,wBAAwB,EAAE,EAAE,oBAAoB,EAAE,CAAC,CAAC;AAEzF,MAAM,CAAC,MAAM,gBAAgB,GAAW;IACpC,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;IACrD,uBAAuB,EAAE,MAAM,CAAC,uBAAuB;IACvD,UAAU,EAAE,MAAM,CAAC,UAAU;IAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;IAC/B,qBAAqB,EAAE,MAAM,CAAC,qBAAqB;IACnD,WAAW,EAAE,MAAM,CAAC,WAAW;IAC/B,cAAc,EAAE,MAAM,CAAC,cAAc;IACrC,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;IACrD,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;IACrD,cAAc,EAAE,MAAM,CAAC,cAAc;IACrC,2BAA2B,EAAE,MAAM,CAAC,2BAA2B;IAC/D,OAAO,EAAE,MAAM,CAAC,OAAO;IACvB,YAAY;IACZ,YAAY,EAAE,MAAM,CAAC,YAAY;CACpC,CAAC"}
|
|
@@ -7,6 +7,9 @@ import { withExecutionSession } from "./execution-session-context.js";
|
|
|
7
7
|
import { runExecutionFailure } from "./execution-failure.js";
|
|
8
8
|
function readExecutionData(observation, message) {
|
|
9
9
|
const decoded = envelopeMessage(message, supervisedChildCorrelationId, supervisedChildMessageSchema);
|
|
10
|
+
if (decoded?.kind === 'result') {
|
|
11
|
+
observation.result.write(decoded.result);
|
|
12
|
+
}
|
|
10
13
|
if (decoded?.kind !== 'execution-data') {
|
|
11
14
|
return;
|
|
12
15
|
}
|
|
@@ -63,14 +66,22 @@ function observedReply(result, call, observation) {
|
|
|
63
66
|
if (!observation.delivered.read()) {
|
|
64
67
|
return missingDataReply(result, call);
|
|
65
68
|
}
|
|
66
|
-
|
|
69
|
+
const completed = observation.result.read();
|
|
70
|
+
const selected = completed === null ? result : {
|
|
71
|
+
...result,
|
|
72
|
+
bySuite: completed.bySuite,
|
|
73
|
+
planStatus: completed.planStatus,
|
|
74
|
+
summary: { ...result.summary, planned: completed.summary.planned }
|
|
75
|
+
};
|
|
76
|
+
return { kind: 'result', result: selected, data: observation.data.read(), deadlineExceeded: false };
|
|
67
77
|
}
|
|
68
78
|
export async function runSupervisedExecutionSession(options, dependencies, call) {
|
|
69
79
|
const observation = {
|
|
70
80
|
data: createStoredValue(null),
|
|
71
81
|
delivered: createStoredValue(false),
|
|
72
82
|
failure: createStoredValue(null),
|
|
73
|
-
invalid: new AbortController()
|
|
83
|
+
invalid: new AbortController(),
|
|
84
|
+
result: createStoredValue(null)
|
|
74
85
|
};
|
|
75
86
|
const operations = createRunOperations(observedDependencies(dependencies, observation), 'test');
|
|
76
87
|
const signal = AbortSignal.any([call.signal, observation.invalid.signal]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution-session-supervised.js","sourceRoot":"","sources":["../../../../source/run/execution-session-supervised.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAoB,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"execution-session-supervised.js","sourceRoot":"","sources":["../../../../source/run/execution-session-supervised.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,7 @@ export function createNodeExecutionDependencies(input) {
|
|
|
14
14
|
return createWorkerPoolWithHostProcess(options, input.readEnvironment(), input.startWorkerPoolHost);
|
|
15
15
|
},
|
|
16
16
|
execute: createExecute({
|
|
17
|
+
benchmarkEnvironment: null,
|
|
17
18
|
asyncLeakDiagnostics: 'enabled',
|
|
18
19
|
readActiveResourceTypes,
|
|
19
20
|
reporterDispatcher: input.reporterDispatcher,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-run-execution.js","sourceRoot":"","sources":["../../../../source/run/node-run-execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AAenE,SAAS,uBAAuB;IAC5B,OAAO,OAAO,CAAC,sBAAsB,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,KAAyB;IACrE,OAAO;QACH,yBAAyB,CAAC,OAAO;YAC7B,OAAO,6BAA6B,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACnE,CAAC;QACD,gBAAgB,CAAC,OAAO;YACpB,OAAO,+BAA+B,CAAC,OAAO,EAAE,KAAK,CAAC,eAAe,EAAE,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACxG,CAAC;QACD,OAAO,EAAE,aAAa,CAAC;YACnB,oBAAoB,EAAE,SAAS;YAC/B,uBAAuB;YACvB,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;YAC5C,SAAS,EAAE,KAAK,CAAC,SAAS;SAC7B,CAAC;QACF,iBAAiB,EAAE,mBAAmB,EAAE;KAC3C,CAAC;AACN,CAAC"}
|
|
1
|
+
{"version":3,"file":"node-run-execution.js","sourceRoot":"","sources":["../../../../source/run/node-run-execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AAenE,SAAS,uBAAuB;IAC5B,OAAO,OAAO,CAAC,sBAAsB,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,KAAyB;IACrE,OAAO;QACH,yBAAyB,CAAC,OAAO;YAC7B,OAAO,6BAA6B,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACnE,CAAC;QACD,gBAAgB,CAAC,OAAO;YACpB,OAAO,+BAA+B,CAAC,OAAO,EAAE,KAAK,CAAC,eAAe,EAAE,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACxG,CAAC;QACD,OAAO,EAAE,aAAa,CAAC;YACnB,oBAAoB,EAAE,IAAI;YAC1B,oBAAoB,EAAE,SAAS;YAC/B,uBAAuB;YACvB,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;YAC5C,SAAS,EAAE,KAAK,CAAC,SAAS;SAC7B,CAAC;QACF,iBAAiB,EAAE,mBAAmB,EAAE;KAC3C,CAAC;AACN,CAAC"}
|
|
@@ -1,68 +1,11 @@
|
|
|
1
|
+
import { hostProcessFacts } from "./run-host-process.js";
|
|
1
2
|
import { createRunShardHasher, shardCollectedRunPlanCases } from "./run-sharding.js";
|
|
2
3
|
import { orderedRunItems } from "./run-ordering.js";
|
|
3
|
-
import {
|
|
4
|
-
import { collectedRunCaseEntriesFromWorkUnits, createWorkerPoolPlacementResolution } from "./worker-pool-placement-planning.js";
|
|
4
|
+
import { collectedRunCaseEntriesFromWorkUnits } from "./worker-pool-placement-planning.js";
|
|
5
5
|
import { constrainedScheduling, workResourceConstraints } from "./work-unit-resource-constraints.js";
|
|
6
6
|
import { assertCollectedPlanCompatible } from "./execution-plan-resolution.js";
|
|
7
7
|
import { resolveRunScheduling } from "./run-profile-facts.js";
|
|
8
|
-
|
|
9
|
-
const fileSets = new Map(files.map(function toFileSetEntry(file) {
|
|
10
|
-
return [file.file, file.fileSet];
|
|
11
|
-
}));
|
|
12
|
-
return function fileSetForFile(file) {
|
|
13
|
-
return file === null ? null : fileSets.get(file) ?? null;
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
function workerPoolAssignmentPolicy(profile) {
|
|
17
|
-
return profile.execution.processModel === 'worker-pool'
|
|
18
|
-
? profile.execution.assignmentPolicy
|
|
19
|
-
: 'case-count-balanced';
|
|
20
|
-
}
|
|
21
|
-
function workDistribution(profile) {
|
|
22
|
-
return profile.execution.processModel === 'worker-pool'
|
|
23
|
-
? profile.execution.workDistribution
|
|
24
|
-
: { mode: 'file' };
|
|
25
|
-
}
|
|
26
|
-
function workerLifecycle(profile) {
|
|
27
|
-
return profile.execution.processModel === 'worker-pool'
|
|
28
|
-
? profile.execution.workerLifecycle
|
|
29
|
-
: 'reuse';
|
|
30
|
-
}
|
|
31
|
-
function profileMaximumWorkers(profile) {
|
|
32
|
-
return profile.execution.processModel === 'worker-pool'
|
|
33
|
-
? profile.execution.maxWorkers
|
|
34
|
-
: null;
|
|
35
|
-
}
|
|
36
|
-
function createPlacementResolution(input, shardHasher) {
|
|
37
|
-
if (input.planKind !== 'worker-pool') {
|
|
38
|
-
return null;
|
|
39
|
-
}
|
|
40
|
-
const runConstraints = input.profile.testFamily === 'benchmark'
|
|
41
|
-
? {
|
|
42
|
-
...emptyWorkUnitResourceConstraints,
|
|
43
|
-
serialKeys: ['run:benchmark-serialization'],
|
|
44
|
-
singleWorkerKeys: ['run:benchmark-serialization']
|
|
45
|
-
}
|
|
46
|
-
: emptyWorkUnitResourceConstraints;
|
|
47
|
-
return createWorkerPoolPlacementResolution({
|
|
48
|
-
runConstraints,
|
|
49
|
-
assignmentPolicy: workerPoolAssignmentPolicy(input.profile),
|
|
50
|
-
availableParallelism: input.dependencies.availableParallelism,
|
|
51
|
-
durationHistoryIndex: input.durationHistoryIndex,
|
|
52
|
-
fileSetForFile: fileSetForDiscoveredFiles(input.files),
|
|
53
|
-
nowMilliseconds: input.dependencies.wallClock.currentUnixEpochMilliseconds,
|
|
54
|
-
order: input.request.order,
|
|
55
|
-
profileMaximumWorkers: profileMaximumWorkers(input.profile),
|
|
56
|
-
requestedWorkers: input.request.workers,
|
|
57
|
-
seed: input.request.seed,
|
|
58
|
-
selectedPlan: input.collectedPlan,
|
|
59
|
-
shard: input.request.shard,
|
|
60
|
-
shardHasher,
|
|
61
|
-
scheduling: input.profile.execution.scheduling,
|
|
62
|
-
workDistribution: workDistribution(input.profile),
|
|
63
|
-
workerLifecycle: workerLifecycle(input.profile)
|
|
64
|
-
});
|
|
65
|
-
}
|
|
8
|
+
import { benchmarkPlacementForCases, createPlacementResolution } from "./collected-placement.js";
|
|
66
9
|
function orderedCollectedCases(input, placementPlan, shardHasher) {
|
|
67
10
|
if (placementPlan !== null) {
|
|
68
11
|
return collectedRunCaseEntriesFromWorkUnits(input.collectedPlan, placementPlan.units);
|
|
@@ -78,12 +21,23 @@ function resolvedScheduling(input, orderedCases) {
|
|
|
78
21
|
}), input.collectedPlan);
|
|
79
22
|
return constrainedScheduling(resolveRunScheduling(input.request, input.profile), constraints);
|
|
80
23
|
}
|
|
24
|
+
async function resolveCollectedHost(input, cases) {
|
|
25
|
+
if (input.profile.execution.processModel !== 'worker-pool') {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
let { hostProcess } = input.profile.execution;
|
|
29
|
+
if (input.profile.testFamily === 'benchmark') {
|
|
30
|
+
const { resolveBenchmarkGarbageCollectionHost } = await import("./benchmark-garbage-collection.js");
|
|
31
|
+
hostProcess = resolveBenchmarkGarbageCollectionHost(hostProcess, input.profile.garbageCollection, cases);
|
|
32
|
+
}
|
|
33
|
+
return hostProcessFacts(hostProcess);
|
|
34
|
+
}
|
|
81
35
|
export async function createCollectedExecutionPlan(input) {
|
|
82
36
|
if (input.planKind === 'supervised') {
|
|
83
37
|
assertCollectedPlanCompatible(input.collectedPlan);
|
|
84
38
|
}
|
|
85
39
|
const shardHasher = await createRunShardHasher(input.request.shard);
|
|
86
|
-
const placementResolution = createPlacementResolution(input, shardHasher);
|
|
40
|
+
const placementResolution = await createPlacementResolution(input, shardHasher);
|
|
87
41
|
const planningFacts = placementResolution ?? {
|
|
88
42
|
durationHistory: null,
|
|
89
43
|
placementPlan: null,
|
|
@@ -92,6 +46,10 @@ export async function createCollectedExecutionPlan(input) {
|
|
|
92
46
|
const { placementPlan, workerCount } = planningFacts;
|
|
93
47
|
const orderedCases = orderedCollectedCases(input, placementPlan, shardHasher);
|
|
94
48
|
return {
|
|
49
|
+
hostProcess: await resolveCollectedHost(input, orderedCases),
|
|
50
|
+
benchmarkPlacement: placementResolution === null
|
|
51
|
+
? await benchmarkPlacementForCases(input, orderedCases)
|
|
52
|
+
: placementResolution.benchmarkPlacement,
|
|
95
53
|
durationHistory: planningFacts.durationHistory,
|
|
96
54
|
orderedCases,
|
|
97
55
|
placementPlan,
|