src/vs/workbench/services/timer/browser/timerService.ts/AbstractTimerService/_reportStartupTimes
class AbstractTimerService:	private _reportStartupTimes(metrics: IStartupMetrics): void {
		// report IStartupMetrics as telemetry
		/* __GDPR__
			"startupTimeVaried" : {
				"owner": "jrieken",
				"${include}": [
					"${IStartupMetrics}"
				]
			}
		*/
		this._telemetryService.publicLog('startupTimeVaried', metrics);


		// report raw timers as telemetry. each mark is send a separate telemetry
		// event and it is "normalized" to a relative timestamp where the first mark
		// defines the start
		for (const [source, marks] of this.getPerformanceMarks()) {
			type Mark = { source: string; name: string; relativeStartTime: number; startTime: number };
			type MarkClassification = {
				owner: 'jrieken';
				comment: 'Information about a performance marker';
				source: { classification: 'SystemMetaData'; purpose: 'PerformanceAndHealth'; comment: 'Where this marker was generated, e.g main, renderer, extension host' };
				name: { classification: 'SystemMetaData'; purpose: 'PerformanceAndHealth'; comment: 'The name of this marker (as defined in source code)' };
				relativeStartTime: { classification: 'SystemMetaData'; purpose: 'PerformanceAndHealth'; isMeasurement: true; comment: 'The duration between the previous and this marker' };
				startTime: { classification: 'SystemMetaData'; purpose: 'PerformanceAndHealth'; isMeasurement: true; comments: 'The absolute timestamp (unix time)' };
			};

			let lastMark: perf.PerformanceMark = marks[0];
			for (const mark of marks) {
				const delta = mark.startTime - lastMark.startTime;
				this._telemetryService.publicLog2<Mark, MarkClassification>('startup.timer.mark', {
					source,
					name: mark.name,
					relativeStartTime: delta,
					startTime: mark.startTime
				});
				lastMark = mark;
			}
		}
	}