Skip to content

Commit fffa94d

Browse files
committed
let timer service report perf telemetry, microsoft#101850
1 parent 2122093 commit fffa94d

2 files changed

Lines changed: 35 additions & 34 deletions

File tree

src/vs/workbench/contrib/performance/electron-browser/startupTimings.ts

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import { IEditorService } from 'vs/workbench/services/editor/common/editorServic
2121
import { IPanelService } from 'vs/workbench/services/panel/common/panelService';
2222
import { didUseCachedData } from 'vs/workbench/services/timer/electron-browser/timerService';
2323
import { IViewletService } from 'vs/workbench/services/viewlet/browser/viewlet';
24-
import { getEntries } from 'vs/base/common/performance';
2524
import { ITimerService } from 'vs/workbench/services/timer/browser/timerService';
2625

2726
export class StartupTimings implements IWorkbenchContribution {
@@ -44,22 +43,7 @@ export class StartupTimings implements IWorkbenchContribution {
4443

4544
private async _report() {
4645
const standardStartupError = await this._isStandardStartup();
47-
this._reportStartupTimes().catch(onUnexpectedError);
4846
this._appendStartupTimes(standardStartupError).catch(onUnexpectedError);
49-
this._reportPerfTicks();
50-
}
51-
52-
private async _reportStartupTimes(): Promise<void> {
53-
const metrics = await this._timerService.startupMetrics;
54-
55-
/* __GDPR__
56-
"startupTimeVaried" : {
57-
"${include}": [
58-
"${IStartupMetrics}"
59-
]
60-
}
61-
*/
62-
this._telemetryService.publicLog('startupTimeVaried', metrics);
6347
}
6448

6549
private async _appendStartupTimes(standardStartupError: string | undefined) {
@@ -121,17 +105,4 @@ export class StartupTimings implements IWorkbenchContribution {
121105
}
122106
return undefined;
123107
}
124-
125-
private _reportPerfTicks(): void {
126-
const entries: Record<string, number> = Object.create(null);
127-
for (const entry of getEntries()) {
128-
entries[entry.name] = entry.startTime;
129-
}
130-
/* __GDPR__
131-
"startupRawTimers" : {
132-
"entries": { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }
133-
}
134-
*/
135-
this._telemetryService.publicLog('startupRawTimers', { entries });
136-
}
137108
}

src/vs/workbench/services/timer/browser/timerService.ts

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import { IViewletService } from 'vs/workbench/services/viewlet/browser/viewlet';
1313
import { IPanelService } from 'vs/workbench/services/panel/common/panelService';
1414
import { IEditorService } from 'vs/workbench/services/editor/common/editorService';
1515
import { IAccessibilityService } from 'vs/platform/accessibility/common/accessibility';
16+
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
1617

1718
/* __GDPR__FRAGMENT__
1819
"IMemoryInfo" : {
@@ -308,18 +309,47 @@ export abstract class AbstractTimerService implements ITimerService {
308309
@IViewletService private readonly _viewletService: IViewletService,
309310
@IPanelService private readonly _panelService: IPanelService,
310311
@IEditorService private readonly _editorService: IEditorService,
311-
@IAccessibilityService private readonly _accessibilityService: IAccessibilityService
312+
@IAccessibilityService private readonly _accessibilityService: IAccessibilityService,
313+
@ITelemetryService private readonly _telemetryService: ITelemetryService,
312314
) { }
313315

314316
get startupMetrics(): Promise<IStartupMetrics> {
315317
if (!this._startupMetrics) {
316-
this._startupMetrics = Promise
317-
.resolve(this._extensionService.whenInstalledExtensionsRegistered())
318-
.then(() => this._computeStartupMetrics());
318+
this._startupMetrics = this._extensionService.whenInstalledExtensionsRegistered()
319+
.then(() => this._computeStartupMetrics())
320+
.then(metrics => {
321+
this._reportStartupTimes(metrics);
322+
return metrics;
323+
});
319324
}
320325
return this._startupMetrics;
321326
}
322327

328+
private _reportStartupTimes(metrics: IStartupMetrics): void {
329+
330+
// report IStartupMetrics as telemetry
331+
/* __GDPR__
332+
"startupTimeVaried" : {
333+
"${include}": [
334+
"${IStartupMetrics}"
335+
]
336+
}
337+
*/
338+
this._telemetryService.publicLog('startupTimeVaried', metrics);
339+
340+
// report raw timers as telemetry
341+
const entries: Record<string, number> = Object.create(null);
342+
for (const entry of perf.getEntries()) {
343+
entries[entry.name] = entry.startTime;
344+
}
345+
/* __GDPR__
346+
"startupRawTimers" : {
347+
"entries": { "classification": "SystemMetaData", "purpose": "PerformanceAndHealth" }
348+
}
349+
*/
350+
this._telemetryService.publicLog('startupRawTimers', { entries });
351+
}
352+
323353
private async _computeStartupMetrics(): Promise<IStartupMetrics> {
324354

325355
const now = Date.now();
@@ -337,7 +367,7 @@ export abstract class AbstractTimerService implements ITimerService {
337367
didUseCachedData: this._didUseCachedData(),
338368
windowKind: this._lifecycleService.startupKind,
339369
windowCount: await this._getWindowCount(),
340-
viewletId: activeViewlet ? activeViewlet.getId() : undefined,
370+
viewletId: activeViewlet?.getId(),
341371
editorIds: this._editorService.visibleEditors.map(input => input.getTypeId()),
342372
panelId: activePanel ? activePanel.getId() : undefined,
343373

0 commit comments

Comments
 (0)