1 write to _schedulingData
Microsoft.Build (1)
BackEnd\Components\Scheduler\Scheduler.cs (1)
599_schedulingData = new SchedulingData();
119 references to _schedulingData
Microsoft.Build (119)
BackEnd\Components\Scheduler\Scheduler.cs (119)
313return _schedulingData.GetRequestsAssignedToConfigurationCount(configurationId) > 0; 336if (!_schedulingData.IsNodeWorking(nodeId)) 341SchedulableRequest request = _schedulingData.GetExecutingRequestByNode(nodeId); 350_schedulingData.EventTime = DateTime.UtcNow; 359parentRequest = _schedulingData.GetYieldingRequest(blocker.BlockedRequestId); 363parentRequest = _schedulingData.GetExecutingRequest(blocker.BlockedRequestId); 423_schedulingData.EventTime = DateTime.UtcNow; 439SchedulableRequest request = _schedulingData.GetExecutingRequest(result.GlobalRequestId); 480_schedulingData.UnscheduledRequests, _schedulingData.UnscheduledRequestsCount, out int numRead); 546_schedulingData.EventTime = DateTime.UtcNow; 580_schedulingData.EventTime = DateTime.UtcNow; 585foreach (SchedulableRequest request in _schedulingData.GetScheduledRequestsByNode(nodeId)) 620foreach (SchedulableRequest request in _schedulingData.GetRequestsByHierarchy(null)) 647_schedulingData.GrantCoresToRequest(requestId, grantedCores); 671_schedulingData.RemoveCoresFromRequest(requestId, coresToRelease); 740if (_schedulingData.UnscheduledRequestsCount == 0 && 741_schedulingData.ReadyRequestsCount == 0 && 742_schedulingData.BlockedRequestsCount == 0) 744if (_schedulingData.ExecutingRequestsCount == 0 && _schedulingData.YieldingRequestsCount == 0) 764if (!_schedulingData.IsNodeWorking(availableNodeId)) 773if (idleNodes.Count > 0 && _schedulingData.UnscheduledRequestsCount > 0) 782if (_schedulingData.UnscheduledRequestsCount > 0 || responses.Count == 0) 784createNodePending = CreateNewNodeIfPossible(responses, _schedulingData.UnscheduledRequests); 790if (_schedulingData.ExecutingRequestsCount > 0 || _schedulingData.YieldingRequestsCount > 0) 794else if (_schedulingData.UnscheduledRequestsCount == 0 && 795_schedulingData.ReadyRequestsCount == 0 && 796_schedulingData.BlockedRequestsCount == 0) 801else if (_schedulingData.BlockedRequestsCount != 0) 812foreach (SchedulableRequest request in _schedulingData.BlockedRequests) 817ErrorUtilities.ThrowInternalError($"Somehow no requests are currently executing, and at least one of the {_schedulingData.BlockedRequestsCount} requests blocked by in-progress requests is servicable by a currently existing node, but no circular dependency was detected ..."); 824ErrorUtilities.ThrowInternalError($"None of the {_schedulingData.BlockedRequestsCount} blocked requests can be serviced by currently existing nodes, but we aren't requesting a new one."); 827else if (_schedulingData.ReadyRequestsCount != 0) 830ErrorUtilities.ThrowInternalError($"Somehow we have {_schedulingData.ReadyRequestsCount} requests which are ready to go but we didn't tell the nodes to continue."); 832else if (_schedulingData.UnscheduledRequestsCount != 0 && !createNodePending) 835ErrorUtilities.ThrowInternalError($"Somehow we have {_schedulingData.UnscheduledRequestsCount} unassigned build requests but {idleNodes.Count} of our nodes are free and we aren't requesting a new one..."); 843TraceScheduler($"Requests scheduled: {nodesFreeToDoWorkPriorToScheduling - idleNodes.Count} Unassigned Requests: {_schedulingData.UnscheduledRequestsCount} Blocked Requests: {_schedulingData.BlockedRequestsCount} Unblockable Requests: {_schedulingData.ReadyRequestsCount} Free Nodes: {idleNodes.Count}/{_availableNodes.Count} Responses: {responses.Count}"); 909_schedulingPlan = new SchedulingPlan(_configCache, _schedulingData); 910ReadSchedulingPlan(_schedulingData.GetRequestsByHierarchy(null).First().BuildRequest.SubmissionId); 1001foreach (SchedulableRequest request in _schedulingData.UnscheduledRequestsWhichCanBeScheduled) 1054SchedulableRequest[] unscheduledRequests = _requestBufferPool.Rent(_schedulingData.UnscheduledRequestsCount); 1057SchedulingData.UnscheduledRequestsWhichCanBeScheduledEnumerator unscheduledRequestsRead = _schedulingData.UnscheduledRequestsWhichCanBeScheduled.GetEnumerator(); 1058while (numRead < _schedulingData.UnscheduledRequestsCount && unscheduledRequestsRead.MoveNext()) 1093IEnumerable<int> nodesByConfigurationCountAscending = _availableNodes.Keys.OrderBy(x => _schedulingData.GetConfigurationsCountByNode(x, excludeTraversals: true, _configCache)); 1105TraceScheduler($"System load limit reached, cannot schedule new work. Executing: {_schedulingData.ExecutingRequestsCount} Yielding: {_schedulingData.YieldingRequestsCount} Max Count: {_componentHost.BuildParameters.MaxNodeCount}"); 1109foreach (SchedulableRequest request in _schedulingData.UnscheduledRequestsWhichCanBeScheduled) 1131while (idleNodes.Count > 0 && _schedulingData.UnscheduledRequestsCount > 0) 1137foreach (SchedulableRequest unscheduledRequest in _schedulingData.UnscheduledRequestsWhichCanBeScheduled) 1139int requiredNodeId = _schedulingData.GetAssignedNodeForRequestConfiguration(unscheduledRequest.BuildRequest.ConfigurationId); 1173while (idleNodes.Count > 0 && _schedulingData.UnscheduledRequestsCount > 0) 1179foreach (SchedulableRequest unscheduledRequest in _schedulingData.UnscheduledRequestsWhichCanBeScheduled) 1181int requiredNodeId = _schedulingData.GetAssignedNodeForRequestConfiguration(unscheduledRequest.BuildRequest.ConfigurationId); 1221foreach (SchedulableRequest currentSchedulableRequest in _schedulingData.UnscheduledRequestsWhichCanBeScheduled) 1224int requiredNodeId = _schedulingData.GetAssignedNodeForRequestConfiguration(currentRequest.ConfigurationId); 1296foreach (SchedulableRequest unscheduledRequest in _schedulingData.UnscheduledRequestsWhichCanBeScheduled) 1325TraceScheduler($"System load limit reached, cannot schedule new work. Executing: {_schedulingData.ExecutingRequestsCount} Yielding: {_schedulingData.YieldingRequestsCount} Max Count: {_componentHost.BuildParameters.MaxNodeCount}"); 1329foreach (SchedulableRequest unscheduledRequest in _schedulingData.UnscheduledRequestsWhichCanBeScheduled) 1366configurationCountsByNode[availableNodeId] = _schedulingData.GetConfigurationsCountByNode(availableNodeId, true /* excludeTraversals */, _configCache); 1389TraceScheduler($"System load limit reached, cannot schedule new work. Executing: {_schedulingData.ExecutingRequestsCount} Yielding: {_schedulingData.YieldingRequestsCount} Max Count: {_componentHost.BuildParameters.MaxNodeCount}"); 1393foreach (SchedulableRequest request in _schedulingData.UnscheduledRequestsWhichCanBeScheduled) 1397int requiredNodeId = _schedulingData.GetAssignedNodeForRequestConfiguration(request.BuildRequest.ConfigurationId); 1452if (request.IsProxyBuildRequest() && nodeId != InProcNodeId && _schedulingData.CanScheduleRequestToNode(request, InProcNodeId)) 1475int implicitlyGrantedCores = Math.Max(1, (_schedulingData.ExecutingRequestsCount * _nodeCoreAllocationWeight) / 100); 1478int explicitlyGrantedCores = _schedulingData.ExplicitlyGrantedCores; 1495if (_schedulingData.ExecutingRequestsCount >= _componentHost.BuildParameters.MaxNodeCount) 1509return _schedulingData.ExecutingRequestsCount + 1510_schedulingData.YieldingRequestsCount + 1511_schedulingData.ExplicitlyGrantedCores >= limit; 1519if (_schedulingData.CanScheduleRequestToNode(request, nodeId)) 1558int assignedNodeForConfiguration = _schedulingData.GetAssignedNodeForRequestConfiguration(request.BuildRequest.ConfigurationId); 1702SchedulableRequest blockingRequest = _schedulingData.GetScheduledRequest(blocker.BlockingRequestId); 1802int assignedNodeId = _schedulingData.GetAssignedNodeForRequestConfiguration(request.ConfigurationId); 1808if (_schedulingData.GetRequestsAssignedToConfigurationCount(request.ConfigurationId) == 0) 1811_schedulingData.UnassignNodeForRequestConfiguration(request.ConfigurationId); 1820else if (_schedulingData.GetRequestsAssignedToConfigurationCount(request.ConfigurationId) > 0) 1823foreach (SchedulableRequest existingRequest in _schedulingData.GetRequestsAssignedToConfiguration(request.ConfigurationId)) 1884SchedulableRequest blockingRequest = _schedulingData.CreateRequest(requestToAdd, parentRequest); 1899foreach (SchedulableRequest request in _schedulingData.GetReadyRequestsByNode(nodeId)) 1948if (!_schedulingData.IsNodeWorking(response.NodeId)) 1995TraceScheduler($"System load limit reached, cannot resume any more work. Executing: {_schedulingData.ExecutingRequestsCount} Yielding: {_schedulingData.YieldingRequestsCount} Max Count: {_componentHost.BuildParameters.MaxNodeCount}"); 2000if (_schedulingData.IsNodeWorking(nodeId)) 2012_schedulingData.UnscheduledRequests, _schedulingData.UnscheduledRequestsCount, out int numRead); 2052string parentProjectFullPath = GetParentConfigurationId(request, _configCache, _schedulingData).ProjectFullPath; 2071BuildRequestConfiguration parentConfig = GetParentConfigurationId(request, _configCache, _schedulingData); 2215int nodeId = _schedulingData.GetAssignedNodeForRequestConfiguration(request.ConfigurationId); 2262if (_schedulingData.CanScheduleConfigurationToNode(request.ConfigurationId, InProcNodeId) && request.IsProxyBuildRequest()) 2335|| _schedulingData.GetRequestsAssignedToConfigurationCount(request.ConfigurationId) == 0) 2344foreach (SchedulableRequest existingRequest in _schedulingData.GetRequestsAssignedToConfiguration(request.ConfigurationId)) 2449foreach (SchedulingData.SchedulingEvent buildEvent in _schedulingData.BuildEvents) 2654List<SchedulableRequest> childRequests = new List<SchedulableRequest>(_schedulingData.GetRequestsByHierarchy(request)); 2690file.Write("{0}({1})-{2}: ", Thread.CurrentThread.Name, Environment.CurrentManagedThreadId, _schedulingData.EventTime.Ticks); 2745if (_schedulingData != null) 2770file.WriteLine("Scheduler state at timestamp {0}:", _schedulingData.EventTime.Ticks); 2778_schedulingData.IsNodeWorking(nodeId) 2782_schedulingData.GetExecutingRequestByNode(nodeId) 2785_schedulingData.GetScheduledRequestsCountByNode(nodeId), 2786_schedulingData.GetConfigurationsCountByNode(nodeId, false, null)); 2788List<SchedulableRequest> scheduledRequestsByNode = new List<SchedulableRequest>(_schedulingData.GetScheduledRequestsByNode(nodeId)); 2797if (!_schedulingData.IsNodeWorking(nodeId)) 2847if (_schedulingData.UnscheduledRequestsCount == 0) 2855foreach (SchedulableRequest request in _schedulingData.UnscheduledRequests) 2878if (_schedulingData != null) 2887List<int> configurations = new List<int>(_schedulingData.Configurations); 2892file.WriteLine("Config {0} Node {1} TV: {2} File {3}", config, _schedulingData.GetAssignedNodeForRequestConfiguration(config), _configCache[config].ToolsVersion, _configCache[config].ProjectFullPath); 2918if (_schedulingData != null) 2943foreach (SchedulableRequest child in _schedulingData.GetRequestsByHierarchy(root)) 2985_schedulingData.GetAssignedNodeForRequestConfiguration(buildRequest.ConfigurationId), 2986_schedulingData.IsRequestScheduled(request) 3000SchedulingPlan plan = new SchedulingPlan(_configCache, _schedulingData); 3009_schedulingPlan = new SchedulingPlan(_configCache, _schedulingData);