From edaaa70e31e07ce1002cd2a1a16a488d6c60bdfd Mon Sep 17 00:00:00 2001 From: Ryan Macnak Date: Mon, 21 Nov 2022 22:25:59 +0000 Subject: [PATCH] [benchmarks] Use gen_kernel instead of dart2js for isolate group benchmarks. - dart2js does not run in NNBD but gen_kernel does. - Changes to dart2js to not trigger VM benchmarks to run on Golem, allowing performance differences to accumulate until the next unrelated VM change. Changes to the front end or package:vm cause a binary diff in the platform file or kernel-service snapshot and so do trigger VM benchmarks to run on Golem. - These benchmarks don't care about running dart2js in particular, just some large program. Change-Id: I85e339c32edbf9d0261081623378475fa0b9507a Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/270022 Reviewed-by: Siva Annamalai Commit-Queue: Ryan Macnak Reviewed-by: Jonas Termansen Reviewed-by: Alexander Aprelev --- .../IsolateSpawn/dart/IsolateSpawn.dart | 6 ++--- .../dart/IsolateSpawnMemory.dart | 22 +++++++++---------- benchmarks/Startup/dart/Startup.dart | 6 ++--- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/benchmarks/IsolateSpawn/dart/IsolateSpawn.dart b/benchmarks/IsolateSpawn/dart/IsolateSpawn.dart index 6212abe382a..f00090155e5 100644 --- a/benchmarks/IsolateSpawn/dart/IsolateSpawn.dart +++ b/benchmarks/IsolateSpawn/dart/IsolateSpawn.dart @@ -6,7 +6,7 @@ import 'dart:async'; import 'dart:isolate'; import 'dart:math'; -import 'package:compiler/src/dart2js.dart' as dart2js_main; +import '../../../pkg/vm/bin/gen_kernel.dart' as gen_kernel; class SpawnLatency { SpawnLatency(this.name); @@ -144,9 +144,9 @@ $toExitUs'''; Future isolateCompiler(StartMessageLatency start) async { final timeRunningCodeUs = DateTime.now(); await runZoned( - () => dart2js_main.internalMain([ + () => gen_kernel.compile([ 'benchmarks/IsolateSpawn/dart/helloworld.dart', - '--libraries-spec=sdk/lib/libraries.json' + 'benchmarks/IsolateSpawn/dart/helloworld.dart.dill', ]), zoneSpecification: ZoneSpecification( print: (Zone self, ZoneDelegate parent, Zone zone, String line) {})); diff --git a/benchmarks/IsolateSpawnMemory/dart/IsolateSpawnMemory.dart b/benchmarks/IsolateSpawnMemory/dart/IsolateSpawnMemory.dart index 0160c034d9e..7a8894e085f 100644 --- a/benchmarks/IsolateSpawnMemory/dart/IsolateSpawnMemory.dart +++ b/benchmarks/IsolateSpawnMemory/dart/IsolateSpawnMemory.dart @@ -8,7 +8,7 @@ import 'dart:io'; import 'dart:isolate'; import 'dart:math' as math; -import 'package:compiler/src/dart2js.dart' as dart2js_main; +import '../../../pkg/vm/bin/gen_kernel.dart' as gen_kernel; import 'package:vm_service/vm_service.dart' as vm_service; import 'package:vm_service/vm_service_io.dart' as vm_service_io; @@ -65,7 +65,7 @@ class SpawnMemory { final readyRss = ProcessInfo.currentRss; final readyHeap = await currentHeapUsage(wsUri); - // Let all isolates do the dart2js compilation. + // Let all isolates do the gen_kernel compilation. for (int i = 0; i < numberOfBenchmarks; i++) { final iterator = iterators[i]; final continuation = continuations[i]; @@ -116,9 +116,9 @@ Future isolateCompiler(StartMessage startMessage) async { await iterator.moveNext(); await runZoned( - () => dart2js_main.internalMain([ - 'benchmarks/IsolateSpawnMemory/dart/helloworld.dart', - '--libraries-spec=sdk/lib/libraries.json' + () => gen_kernel.compile([ + 'benchmarks/IsolateSpawn/dart/helloworld.dart', + 'benchmarks/IsolateSpawn/dart/helloworld.dart.dill', ]), zoneSpecification: ZoneSpecification( print: (Zone self, ZoneDelegate parent, Zone zone, String line) {})); @@ -138,7 +138,7 @@ Future currentHeapUsage(String wsUri) async { int sum = 0; for (final groupId in groupIds) { final usage = await vmService.getIsolateGroupMemoryUsage(groupId); - sum += usage.heapUsage + usage.externalUsage; + sum += usage.heapUsage! + usage.externalUsage!; } vmService.dispose(); return sum; @@ -161,12 +161,12 @@ Future main() async { Future> getGroupIds(vm_service.VmService vmService) async { final groupIds = {}; final vm = await vmService.getVM(); - for (final groupRef in vm.isolateGroups) { - final group = await vmService.getIsolateGroup(groupRef.id); - for (final isolateRef in group.isolates) { - final isolateOrSentinel = await vmService.getIsolate(isolateRef.id); + for (final groupRef in vm.isolateGroups!) { + final group = await vmService.getIsolateGroup(groupRef.id!); + for (final isolateRef in group.isolates!) { + final isolateOrSentinel = await vmService.getIsolate(isolateRef.id!); if (isolateOrSentinel is vm_service.Isolate) { - groupIds.add(groupRef.id); + groupIds.add(groupRef.id!); } } } diff --git a/benchmarks/Startup/dart/Startup.dart b/benchmarks/Startup/dart/Startup.dart index 03bd22e2eaf..f60d456c10c 100644 --- a/benchmarks/Startup/dart/Startup.dart +++ b/benchmarks/Startup/dart/Startup.dart @@ -5,7 +5,7 @@ import 'dart:convert'; import 'dart:io'; -import 'package:compiler/src/dart2js.dart' as dart2js; +import '../../../pkg/vm/bin/gen_kernel.dart' as gen_kernel; Future main(List args) async { if (args.contains('--child')) { @@ -16,7 +16,7 @@ Future main(List args) async { // non-trival snapshot size. if (args.contains('--train')) { args.remove('--train'); - return dart2js.main(args); + return gen_kernel.main(args); } var tempDir; @@ -54,7 +54,7 @@ Future main(List args) async { throw 'Could not determine main isolate'; } - void report(String name, String isolateId) { + void report(String name, String? isolateId) { var filtered = events.where((event) => event['name'] == name); if (isolateId != null) { filtered =