Skip to content

Commit ba40dce

Browse files
jensjohaCommit Queue
authored andcommitted
[analyzer] Introduce --disable-file-byte-store
Intended for benchmarking in combination with `--train-using` to make the instruction count used more stable. E.g. run like ``` perf stat -e "instructions:u" \ out/ReleaseX64/dart-sdk/bin/dartaotruntime \ --deterministic pkg/analysis_server/bin/server.aot \ --disable-file-byte-store --train-using pkg/front_end/lib/ ``` (on an aot-compiled server ( ``` out/ReleaseX64/dart-sdk/bin/dart compile \ aot-snapshot pkg/analysis_server/bin/server.dart` ``` ) looking at `instructions:u` the standard deviation is reduced quite a bit compared to not passing the new parameter. Without: 179,111,320 (95% becomes ±0.14%) With: 2,743,207 (95% becomes ±0.002%) Raw (although sorsted) numbers: Without: ``` 51,029,580,408 51,032,748,835 51,033,471,737 51,040,240,638 51,041,785,525 51,042,264,608 51,059,291,236 51,102,379,269 51,112,553,122 51,130,806,654 51,132,553,799 51,136,189,490 51,145,979,715 51,154,797,225 51,157,949,300 51,158,330,761 51,158,991,218 51,166,545,840 51,173,629,326 51,291,270,598 51,457,570,261 51,460,114,586 51,475,491,602 51,545,172,493 51,658,750,242 ``` With: ``` 49,878,337,415 49,878,419,595 49,879,001,051 49,881,016,075 49,882,607,217 49,882,624,488 49,883,029,234 49,883,305,881 49,883,384,825 49,883,585,095 49,883,725,866 49,884,020,490 49,884,020,988 49,884,213,971 49,884,552,882 49,884,562,548 49,884,644,369 49,885,275,225 49,885,344,007 49,885,914,848 49,886,165,117 49,886,968,388 49,887,615,329 49,888,309,000 49,888,930,570 ``` Change-Id: Id492e094a3176c2877f15e5952767ea55bef3657 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/428000 Commit-Queue: Jens Johansen <[email protected]> Reviewed-by: Brian Wilkerson <[email protected]>
1 parent 8f3dd79 commit ba40dce

File tree

3 files changed

+23
-0
lines changed

3 files changed

+23
-0
lines changed

pkg/analysis_server/lib/src/analysis_server.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -570,6 +570,10 @@ abstract class AnalysisServer {
570570
return providedByteStore;
571571
}
572572

573+
if (options.disableFileByteStore ?? false) {
574+
return MemoryCachingByteStore(NullByteStore(), memoryCacheSize);
575+
}
576+
573577
if (resourceProvider is OverlayResourceProvider) {
574578
resourceProvider = resourceProvider.baseProvider;
575579
}

pkg/analysis_server/lib/src/legacy_analysis_server.dart

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,12 @@ class AnalysisServerOptions {
142142
/// Base path where to cache data.
143143
String? cacheFolder;
144144

145+
/// If [true] don't create a (Evicting)FileByteStore.
146+
///
147+
/// Intended for benchmarking as it makes "instructions:u" in `perf stat` more
148+
/// stable, although it then doesn't benchmark that code.
149+
bool? disableFileByteStore;
150+
145151
/// The path to the package config file override.
146152
/// If `null`, then the default discovery mechanism is used.
147153
String? packagesFile;

pkg/analysis_server/lib/src/server/driver.dart

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,9 @@ class Driver implements ServerStarter {
133133
/// A directory to analyze in order to train an analysis server snapshot.
134134
static const String TRAIN_USING = 'train-using';
135135

136+
/// Flag to not use a (Evicting)FileByteStore.
137+
static const String DISABLE_FILE_BYTE_STORE = 'disable-file-byte-store';
138+
136139
/// The builder for attachments that should be included into crash reports.
137140
CrashReportingAttachmentsBuilder crashReportingAttachmentsBuilder =
138141
CrashReportingAttachmentsBuilder.empty;
@@ -421,6 +424,9 @@ class Driver implements ServerStarter {
421424
'analysis_server_',
422425
);
423426
analysisServerOptions.cacheFolder = tempDriverDir.path;
427+
analysisServerOptions.disableFileByteStore = results.flag(
428+
DISABLE_FILE_BYTE_STORE,
429+
);
424430

425431
var devServer = DevAnalysisServer(socketServer);
426432
devServer.initServer();
@@ -650,6 +656,7 @@ class Driver implements ServerStarter {
650656
USE_LSP,
651657
'use-new-relevance',
652658
'use-fasta-parser',
659+
DISABLE_FILE_BYTE_STORE,
653660
];
654661
return knownArguments
655662
.where((argument) => results.wasParsed(argument))
@@ -842,6 +849,12 @@ class Driver implements ServerStarter {
842849
'analysis server snapshot. Disables analytics.',
843850
hide: true,
844851
);
852+
parser.addFlag(
853+
DISABLE_FILE_BYTE_STORE,
854+
help:
855+
'Disable use of (Evicting)FileByteStore. Intended for benchmarking.',
856+
hide: true,
857+
);
845858
parser.addFlag(
846859
DISABLE_SERVER_EXCEPTION_HANDLING,
847860
// TODO(jcollins-g): Pipeline option through and apply to all

0 commit comments

Comments
 (0)