public abstract void DominoPerformanceSummary()

in Public/Src/App/Bxl/Tracing/Log.cs [126:536]


        public abstract void DominoPerformanceSummary(LoggingContext context, int processPipsCacheHit, int cacheHitRate, int incrementalSchedulingPrunedPips, int incrementalSchedulingPruneRate, int totalProcessPips, bool serverUsed,
            string appInitializationPercent, string graphConstructionPercent, string scrubbingPercent, string schedulerInitPercent, string executePhasePercent, int highLevelOtherPercent,
            string checkingForPipGraphReusePercent, string reloadingPipGraphPercent, string createGraphPercent, int graphConstructionOtherPercent,
            int processExecutePercent, string telemetryTagsPercent, int processRunningPercent, int hashingInputs, int checkingForCacheHit, int processOutputs, int replayFromCache, int prepareSandbox, int processOverheadOther, int nonProcessPips,
            int averageCpu, int minAvailableMemoryMb, string diskUsage,
            LimitingResourcePercentages limitingResourcePercentages);

        [GeneratedEvent(
            (ushort)LogEventId.DominoCatastrophicFailure,
            EventGenerators = EventGenerators.TelemetryOnly,
            EventLevel = Level.Critical,
            Message = "Telemetry Only")]
        public abstract void DominoCatastrophicFailure(LoggingContext context,
            string exception,
            BuildInfo buildInfo,
            ExceptionRootCause rootCause,
            bool wasServer,
            string firstUserError,
            string lastUserError,
            string firstInsfrastructureError,
            string lastInfrastructureError,
            string firstInternalError,
            string lastInternalError);

        [GeneratedEvent(
            (ushort)LogEventId.DominoMacOSCrashReport,
            EventGenerators = EventGenerators.TelemetryOnly,
            EventLevel = Level.Critical,
            Message = "Telemetry Only")]
        public abstract void DominoMacOSCrashReport(LoggingContext context, string crashSessionId, string content, string type, string filename);

        [GeneratedEvent(
            (ushort)LogEventId.UsingExistingServer,
            EventGenerators = EventGenerators.LocalOnly,
            EventLevel = Level.Verbose,
            Keywords = (int)Keywords.UserMessage,
            Message = EventConstants.PhasePrefix + "Running from existing {ShortProductName} server process.")]
        public abstract void UsingExistingServer(LoggingContext context, ServerModeBuildStarted serverModeBuildStarted);

        [GeneratedEvent(
            (ushort)LogEventId.AppServerBuildStart,
            EventGenerators = EventGenerators.LocalAndTelemetry,
            EventLevel = Level.Verbose,
            Message = "Starting build from server process: UniqueServerName:{uniqueAppServerName}, PID: {serverModeBuildStarted.PID}, Times process reused: {serverModeBuildStarted.TimesPreviouslyUsed}, ThreadCount:{serverModeBuildStarted.StartPerformance.ThreadCount}, HandleCount:{serverModeBuildStarted.StartPerformance.HandleCount}")]
        public abstract void ServerModeBuildStarted(LoggingContext context, ServerModeBuildStarted serverModeBuildStarted, string uniqueAppServerName);

        [GeneratedEvent(
            (ushort)LogEventId.AppServerBuildFinish,
            EventGenerators = EventGenerators.LocalOnly,
            EventLevel = Level.Verbose,
            Message = "Finished build from server process: ThreadCount:{serverModeBuildCompleted.EndPerformance.ThreadCount} HandleCount:{serverModeBuildCompleted.EndPerformance.HandleCount}")]
        public abstract void ServerModeBuildCompleted(LoggingContext context, ServerModeBuildCompleted serverModeBuildCompleted);

        [GeneratedEvent(
            (ushort)LogEventId.StartingNewServer,
            EventGenerators = EventGenerators.LocalOnly,
            EventLevel = Level.Verbose,
            Keywords = (int)Keywords.UserMessage,
            Message = EventConstants.PhasePrefix + "Starting new {ShortProductName} server process.")]
        public abstract void StartingNewServer(LoggingContext context, ServerModeBuildStarted serverModeBuildStarted);

        [GeneratedEvent(
            (ushort)LogEventId.CannotStartServer,
            EventGenerators = EventGenerators.LocalAndTelemetry,
            EventLevel = Level.Verbose,
            Keywords = (int)(Keywords.UserMessage | Keywords.Progress),
            Message = "Server mode was requested but cannot be started. {serverModeCannotStart.Reason}.")]
        public abstract void CannotStartServer(LoggingContext context, ServerModeCannotStart serverModeCannotStart);

        [GeneratedEvent(
            (ushort)LogEventId.DeploymentUpToDateCheckPerformed,
            EventGenerators = EventGenerators.LocalAndTelemetry,
            EventLevel = Level.Verbose,
            Keywords = (int)(Keywords.UserMessage | Keywords.Progress),
            Message = "{ShortProductName} binary deployment up-to-date check performed in {deploymentUpToDateCheck.TimeToUpToDateCheckMilliseconds}ms. Deployment cache created:{deploymentCacheCreated}, deployment duration:{serverDeploymentCacheCreated.TimeToCreateServerCacheMilliseconds}ms.")]
        public abstract void DeploymentUpToDateCheckPerformed(LoggingContext context, ServerDeploymentUpToDateCheck deploymentUpToDateCheck, bool deploymentCacheCreated, ServerDeploymentCacheCreated serverDeploymentCacheCreated);

        [GeneratedEvent(
            (ushort)LogEventId.DeploymentCacheCreated,
            EventGenerators = EventGenerators.LocalOnly,
            EventLevel = Level.Verbose,
            Keywords = (int)(Keywords.UserMessage | Keywords.Progress),
            EventTask = (ushort)Tasks.HostApplication,
            Message = "{ShortProductName} deployment cache was created. This means this is the first time {ShortProductName} is requested to run in server mode or {ShortProductName} binaries changed. Duration: {serverDeploymentCacheCreated.TimeToCreateServerCacheMilliseconds}ms.")]
        public abstract void DeploymentCacheCreated(LoggingContext context, ServerDeploymentCacheCreated serverDeploymentCacheCreated);

        [GeneratedEvent(
            (ushort)LogEventId.TelemetryEnabledHideNotification,
            EventGenerators = EventGenerators.LocalOnly,
            EventLevel = Level.Verbose,
            Message = EventConstants.PhasePrefix + "Telemetry is enabled. SessionId: {sessionId}",
            Keywords = (int)Keywords.UserMessage)]
        public abstract void TelemetryEnabledHideNotification(LoggingContext context, string sessionId);

        [GeneratedEvent(
            (ushort)LogEventId.MemoryLoggingEnabled,
            EventGenerators = EventGenerators.LocalOnly,
            EventLevel = Level.Warning,
            Message = "Memory logging is enabled (/logmemory). This has a negative performance impact and should only be used for performing memory analysis.",
            Keywords = (int)Keywords.UserMessage)]
        public abstract void MemoryLoggingEnabled(LoggingContext context);

        [GeneratedEvent(
            (ushort)LogEventId.TelemetryEnabledNotifyUser,
            EventGenerators = EventGenerators.LocalOnly,
            EventLevel = Level.Informational,
            Message = EventConstants.PhasePrefix + "Telemetry is enabled. SessionId: {sessionId}",
            Keywords = (int)Keywords.UserMessage)]
        public abstract void TelemetryEnabledNotifyUser(LoggingContext context, string sessionId);

        [GeneratedEvent(
            (ushort)LogEventId.MappedRoot,
            EventGenerators = EventGenerators.LocalOnly,
            EventLevel = Level.Informational,
            Keywords = (int)Keywords.UserMessage,
            EventTask = (ushort)Tasks.HostApplication,
            Message = "Mapped root drive '{rootDrive}' to directory '{directory}'")]
        public abstract void MappedRoot(LoggingContext context, string rootDrive, string directory);

        [GeneratedEvent(
            (ushort)LogEventId.CatastrophicFailure,
            EventGenerators = EventGenerators.LocalOnly,
            EventLevel = Level.Critical,
            Keywords = (int)Keywords.UserMessage,
            EventTask = (ushort)Tasks.HostApplication,
            Message = "Catastrophic {ShortProductName} Failure.\nBuild:{build}{commitId}.\nException:{message}")]
        public abstract void CatastrophicFailure(LoggingContext context, string message, string commitId, string build);

        [GeneratedEvent(
            (ushort)LogEventId.CatastrophicFailureCausedByDiskSpaceExhaustion,
            EventGenerators = EventGenerators.LocalOnly,
            EventLevel = Level.Critical,
            Keywords = (int)Keywords.UserMessage,
            EventTask = (ushort)Tasks.HostApplication,
            Message = "One or more I/O operations have failed since a volume is out of space. Ensure that the volumes containing build outputs, logs, or the build cache have sufficient free space, and try again.")]
        public abstract void CatastrophicFailureCausedByDiskSpaceExhaustion(LoggingContext context);

        [GeneratedEvent(
            (ushort)LogEventId.StorageCatastrophicFailureDriveError,
            EventGenerators = EventGenerators.LocalOnly,
            EventLevel = Level.Critical,
            Keywords = (int)Keywords.UserMessage,
            EventTask = (ushort)Tasks.HostApplication,
            Message = "One or more I/O operations have failed due to a disk error. Check your disk drives for errors.")]
        public abstract void StorageCatastrophicFailureCausedByDriveError(LoggingContext context);

        [GeneratedEvent(
            (ushort)LogEventId.CatastrophicFailureMissingRuntimeDependency,
            EventGenerators = EventGenerators.LocalOnly,
            EventLevel = Level.Critical,
            Keywords = (int)Keywords.UserMessage,
            EventTask = (ushort)Tasks.HostApplication,
            Message = "A runtime dependency was not found. This usually indicates one or more assemblies were not correctly copied with the {MainExecutableName} deployment. Details: {message}")]
        public abstract void CatastrophicFailureMissingRuntimeDependency(LoggingContext context, string message);

        [GeneratedEvent(
            (ushort)LogEventId.CatastrophicFailureCausedByCorruptedCache,
            EventGenerators = EventGenerators.LocalOnly,
            EventLevel = Level.Critical,
            Keywords = (int)Keywords.UserMessage,
            EventTask = (ushort)Tasks.HostApplication,
            Message = "{ShortProductName} cache is potentially corrupted. Please restart the build. {ShortProductName} will try to recover from this corruption in the next run. If this issue persists, please email domdev@microsoft.com")]
        public abstract void CatastrophicFailureCausedByCorruptedCache(LoggingContext context);

        [GeneratedEvent(
            (ushort)LogEventId.Channel,
            EventGenerators = EventGenerators.LocalOnly,
            EventLevel = Level.Informational,
            Keywords = (int)Keywords.UserMessage,
            EventTask = (ushort)Tasks.Engine,
            Message = "Listen channel is '{channelName}'")]
        public abstract void Channel(LoggingContext context, string channelName);

        [GeneratedEvent(
            (ushort)LogEventId.CancellationRequested,
            EventGenerators = EventGenerators.LocalOnly,
            EventLevel = Level.Error,
            Keywords = (int)(Keywords.UserMessage | Keywords.UserError),
            EventTask = (ushort)Tasks.HostApplication,
            EventOpcode = (byte)EventOpcode.Info,
            Message = "Graceful cancellation requested.\r\n" + "Use ctrl-break for immediate termination. CAUTION! This may slow down the next build.")]
        public abstract void CancellationRequested(LoggingContext context);

        [GeneratedEvent(
            (ushort)LogEventId.TelemetryShutDown,
            EventGenerators = EventGenerators.LocalOnly,
            EventLevel = Level.Verbose,
            Keywords = (int)Keywords.UserMessage,
            EventTask = (ushort)Tasks.HostApplication,
            Message = "Telemetry shut down completed in {0}ms")]
        public abstract void TelemetryShutDown(LoggingContext context, long telemetryShutdownDurationMs);

        [GeneratedEvent(
            (ushort)LogEventId.TelemetryShutDownException,
            EventGenerators = EventGenerators.LocalOnly,
            EventLevel = Level.Error,
            Keywords = (int)Keywords.UserMessage,
            EventTask = (ushort)Tasks.HostApplication,
            Message = "Telemetry shut down results in an exception: {0}")]
        public abstract void TelemetryShutDownException(LoggingContext context, string message);

        [GeneratedEvent(
            (ushort)LogEventId.TelemetryShutdownTimeout,
            EventGenerators = EventGenerators.LocalOnly,
            EventLevel = Level.Informational,
            Keywords = (int)Keywords.UserMessage,
            EventTask = (ushort)Tasks.HostApplication,
            Message = "Telemetry timed out after {0} milliseconds. This session will have incomplete telemetry data")]
        public abstract void TelemetryShutdownTimeout(LoggingContext context, long milliseconds);

        [GeneratedEvent(
            (ushort)LogEventId.EventCount,
            EventGenerators = EventGenerators.TelemetryOnly,
            EventLevel = Level.Verbose,
            Message = "N/A")]
        public abstract void EventCounts(LoggingContext context, IDictionary<string, int> entryMatches);

        [GeneratedEvent(
            (ushort)LogEventId.FailedToEnumerateLogDirsForCleanup,
            EventGenerators = EventGenerators.LocalOnly,
            Message = "Failed to enumerate log directories for cleanup '{logsRoot}': {message}",
            EventLevel = Level.Informational,
            EventTask = (ushort)Tasks.HostApplication,
            Keywords = (int)Keywords.UserMessage)]
        public abstract void FailedToEnumerateLogDirsForCleanup(LoggingContext context, string logsRoot, string message);

        [GeneratedEvent(
            (ushort)LogEventId.FailedToCleanupLogDir,
            EventGenerators = EventGenerators.LocalOnly,
            Message = "Failed to delete log directory '{logDirectory}': {message}",
            EventLevel = Level.Informational,
            EventTask = (ushort)Tasks.HostApplication,
            Keywords = (int)Keywords.UserMessage)]
        public abstract void FailedToCleanupLogDir(LoggingContext context, string logDirectory, string message);

        [GeneratedEvent(
            (ushort)LogEventId.WaitingCleanupLogDir,
            EventGenerators = EventGenerators.LocalOnly,
            Message = "Waiting for the log cleanup thread to finish...",
            EventLevel = Level.Informational,
            EventTask = (ushort)Tasks.HostApplication,
            Keywords = (int)Keywords.UserMessage)]
        public abstract void WaitingCleanupLogDir(LoggingContext context);

        [GeneratedEvent(
            (int)LogEventId.EventWriteFailuresOccurred,
            EventGenerators = EventGenerators.LocalOnly,
            EventLevel = Level.Warning,
            Keywords = (int)Keywords.Diagnostics,
            EventTask = (int)Tasks.HostApplication,
            Message = "One or more event-write failures occurred. ETW trace sessions (including produced trace files) may be incomplete.")]
        public abstract void EventWriteFailuresOccurred(LoggingContext context);

        [GeneratedEvent(
            (int)LogEventId.CoreDumpNoPermissions,
            EventGenerators = EventGenerators.LocalOnly,
            EventLevel = Level.Warning,
            Keywords = (int)Keywords.UserMessage,
            EventTask = (int)Tasks.HostApplication,
            Message = "Setting up core dump creation for abnormal program exits has failed. Make sure you have permissions to read and write the core dump directory at '{directory}'.")]
        public abstract void DisplayCoreDumpDirectoryNoPermissionsWarning(LoggingContext context, string directory);

        [GeneratedEvent(
            (int)LogEventId.CrashReportProcessing,
            EventGenerators = EventGenerators.LocalOnly,
            EventLevel = Level.Warning,
            Keywords = (int)Keywords.UserMessage,
            EventTask = (int)Tasks.HostApplication,
            Message = "Crash reports could not be processed and uploaded, make sure the state file '{stateFilePath}' is not malformed and accessible. Error: {message}.")]
        public abstract void DisplayCrashReportProcessingFailedWarning(LoggingContext context, string stateFilePath, string message);

        [GeneratedEvent(
            (ushort)LogEventId.ChangeJournalServiceReady,
            EventGenerators = EventGenerators.LocalOnly,
            EventLevel = Level.Informational,
            Message = EventConstants.PhasePrefix + "{ShortProductName} JournalService is properly set up and you are ready to use {ShortProductName} with graph-caching enabled.",
            Keywords = (int)Keywords.UserMessage)]
        public abstract void ChangeJournalServiceReady(LoggingContext context);

        [GeneratedEvent(
            (ushort)LogEventId.BuildHasPerfSmells,
            EventGenerators = EventGenerators.LocalOnly,
            EventLevel = Level.Verbose,
            EventTask = (ushort)Tasks.HostApplication,
            Message = "---------- PERFORMANCE SMELLS ----------",
            Keywords = (int)Keywords.UserMessage)]
        public abstract void BuildHasPerfSmells(LoggingContext context);

        [GeneratedEvent(
            (ushort)LogEventId.ProcessPipsUncacheable,
            EventGenerators = EventGenerators.LocalOnly,
            EventLevel = Level.Verbose,
            EventTask = (ushort)Tasks.HostApplication,
            Message = "Uncacheable Pips: This build had {count} pips that are not cacheable and will be unconditionally run. See related DX0269 messages earlier in the log for details.",
            Keywords = (int)Keywords.UserMessage)]
        public abstract void ProcessPipsUncacheable(LoggingContext context, long count);

        [GeneratedEvent(
            (ushort)LogEventId.NoCriticalPathTableHits,
            EventGenerators = EventGenerators.LocalOnly,
            EventLevel = Level.Verbose,
            EventTask = (ushort)Tasks.HostApplication,
            Message = "No critical path info: This build could not optimize the critical path based on previous runtime information. Either this was the first build on a machine or the engine cache directory was deleted.",
            Keywords = (int)Keywords.UserMessage)]
        public abstract void NoCriticalPathTableHits(LoggingContext context);

        [GeneratedEvent(
            (ushort)LogEventId.NoSourceFilesUnchanged,
            EventGenerators = EventGenerators.LocalOnly,
            EventLevel = Level.Verbose,
            EventTask = (ushort)Tasks.HostApplication,
            Message = "No FileContentTable: This build had to rehash all files instead of leveraging the USN journal to skip hashing of previously seen files. Either this was the first build on a machine or the engine cache directory was deleted.",
            Keywords = (int)Keywords.UserMessage)]
        public abstract void NoSourceFilesUnchanged(LoggingContext context);

        [GeneratedEvent(
            (ushort)LogEventId.ServerModeDisabled,
            EventGenerators = EventGenerators.LocalOnly,
            EventLevel = Level.Verbose,
            EventTask = (ushort)Tasks.HostApplication,
            Message = "Server mode disabled: This build disabled server mode. Unless this is a lab build, server mode should be enabled to speed up back to back builds.",
            Keywords = (int)Keywords.UserMessage)]
        public abstract void ServerModeDisabled(LoggingContext context);

        [GeneratedEvent(
            (ushort)LogEventId.GraphCacheCheckJournalDisabled,
            EventGenerators = EventGenerators.LocalOnly,
            EventLevel = Level.Verbose,
            EventTask = (ushort)Tasks.HostApplication,
            Message = "Change journal scan disabled: This build didn't utilize the change journal scan when checking for pip graph reuse. This significantly degrades I/O performance on spinning disk drives. The journal requires running as admin or installation of the change journal service. Check the warning log for details.",
            Keywords = (int)Keywords.UserMessage)]
        public abstract void GraphCacheCheckJournalDisabled(LoggingContext context);

        [GeneratedEvent(
            (ushort)LogEventId.SlowCacheInitialization,
            EventGenerators = EventGenerators.LocalOnly,
            EventLevel = Level.Verbose,
            EventTask = (ushort)Tasks.HostApplication,
            Message = "Cache initialization took {cacheInitializationDurationMs}ms. This long of an initialization may mean that cache metadata needed to be reconstructed because {ShortProductName} was not shut down cleanly in the previous build. Make sure to allow {ShortProductName} to shut down cleanly (single ctrl-c).",
            Keywords = (int)Keywords.UserMessage)]
        public abstract void SlowCacheInitialization(LoggingContext context, long cacheInitializationDurationMs);

        [GeneratedEvent(
            (ushort)LogEventId.LogProcessesEnabled,
            EventGenerators = EventGenerators.LocalOnly,
            EventLevel = Level.Verbose,
            EventTask = (ushort)Tasks.HostApplication,
            Message = "The /logprocesses option is enabled which causes {ShortProductName} to capture data about all child processes and all file accesses. This is helpful for diagnosing problems, but slows down builds and should be selectively be enabled only when that data is needed.",
            Keywords = (int)Keywords.UserMessage)]
        public abstract void LogProcessesEnabled(LoggingContext context);

        [GeneratedEvent(
            (ushort)LogEventId.FrontendIOSlow,
            EventGenerators = EventGenerators.LocalOnly,
            EventLevel = Level.Verbose,
            EventTask = (ushort)Tasks.HostApplication,
            Message = "Reading build specifications was {0:N1}x more expensive as evaluating them. This is generally a sign that IO performance is degraded. This could be due to GVFS needing to materialize remote files.",
            Keywords = (int)Keywords.UserMessage)]
        public abstract void FrontendIOSlow(LoggingContext context, double factor);

        [GeneratedEvent(
            (ushort)LogEventId.PerformanceCollectorInitializationFailed,
            EventGenerators = EventGenerators.LocalOnly,
            EventLevel = Level.Verbose,
            Message = "An exception was occurred/swallowed when initializing performance collector: {exception}.",
            Keywords = (int)Keywords.UserMessage)]
        public abstract void PerformanceCollectorInitializationFailed(LoggingContext context, string exception);

        [GeneratedEvent(
            (int)LogEventId.CbTimeoutReached,
            EventGenerators = EventGenerators.LocalOnly,
            EventLevel = Level.Error,
            EventTask = (ushort)Tasks.Scheduler,
            Keywords = (int)(Keywords.UserMessage | Keywords.InfrastructureError),
            Message = "Build Termination started {timeoutMins} mins before CB timeout for clean exit. BuildXL had a total of {availableMins} mins to complete the build.")]
        public abstract void CbTimeoutReached(LoggingContext context, int timeoutMins, int availableMins);

        [GeneratedEvent(
            (int)LogEventId.CbTimeoutTooLow,
            EventGenerators = EventGenerators.LocalOnly,
            EventLevel = Level.Error,
            EventTask = (ushort)Tasks.Scheduler,
            Keywords = (int)(Keywords.UserMessage | Keywords.InfrastructureError),
            Message = "Build Terminated immediately since CB timeout is less than {mins} mins, please increase the CB timeout in your queue config")]
        public abstract void CbTimeoutTooLow(LoggingContext context, int mins);

        [GeneratedEvent(
            (int)LogEventId.CbTimeoutInvalid,
            EventGenerators = EventGenerators.LocalOnly,
            EventLevel = Level.Warning,
            EventTask = (ushort)Tasks.Scheduler,
            Keywords = (int)(Keywords.UserMessage | Keywords.InfrastructureError),
            Message = "BuildXL received invalid CB Timeout information. Current Time UTC ticks: {utcTicksNow}. Timeout UTC ticks received from CB: {utcTicksCbTimeout}.")]
        public abstract void CbTimeoutInvalid(LoggingContext context, string utcTicksNow, string utcTicksCbTimeout);

        [GeneratedEvent(
            (int)LogEventId.CbTimeoutInfo,
            EventGenerators = EventGenerators.LocalOnly,
            EventLevel = Level.Verbose,
            EventTask = (ushort)Tasks.Scheduler,
            Keywords = (int)(Keywords.UserMessage),
            Message = "{ShortProductName} will terminate if build exceeds {allowedRemainingMinutes} minutes ({minutesBeforeQueueTimeout} minutes before timeout specified in CloudBuild Queue configuration).")]
        public abstract void CbTimeoutInfo(LoggingContext context, int minutesBeforeQueueTimeout, int allowedRemainingMinutes);
    }

    /// <summary>
    /// Start of a build connecting to a server process
    /// </summary>
    [SuppressMessage("Microsoft.Performance", "CA1815")]
    public struct ServerModeBuildStarted
    {