1 write to _schedulingData
Microsoft.Build (1)
BackEnd\Components\Scheduler\Scheduler.cs (1)
585_schedulingData = new SchedulingData();
119 references to _schedulingData
Microsoft.Build (119)
BackEnd\Components\Scheduler\Scheduler.cs (119)
299return _schedulingData.GetRequestsAssignedToConfigurationCount(configurationId) > 0; 322if (!_schedulingData.IsNodeWorking(nodeId)) 327SchedulableRequest request = _schedulingData.GetExecutingRequestByNode(nodeId); 336_schedulingData.EventTime = DateTime.UtcNow; 345parentRequest = _schedulingData.GetYieldingRequest(blocker.BlockedRequestId); 349parentRequest = _schedulingData.GetExecutingRequest(blocker.BlockedRequestId); 409_schedulingData.EventTime = DateTime.UtcNow; 425SchedulableRequest request = _schedulingData.GetExecutingRequest(result.GlobalRequestId); 466_schedulingData.UnscheduledRequests, _schedulingData.UnscheduledRequestsCount, out int numRead); 532_schedulingData.EventTime = DateTime.UtcNow; 566_schedulingData.EventTime = DateTime.UtcNow; 571foreach (SchedulableRequest request in _schedulingData.GetScheduledRequestsByNode(nodeId)) 606foreach (SchedulableRequest request in _schedulingData.GetRequestsByHierarchy(null)) 633_schedulingData.GrantCoresToRequest(requestId, grantedCores); 657_schedulingData.RemoveCoresFromRequest(requestId, coresToRelease); 726if (_schedulingData.UnscheduledRequestsCount == 0 && 727_schedulingData.ReadyRequestsCount == 0 && 728_schedulingData.BlockedRequestsCount == 0) 730if (_schedulingData.ExecutingRequestsCount == 0 && _schedulingData.YieldingRequestsCount == 0) 750if (!_schedulingData.IsNodeWorking(availableNodeId)) 759if (idleNodes.Count > 0 && _schedulingData.UnscheduledRequestsCount > 0) 768if (_schedulingData.UnscheduledRequestsCount > 0 || responses.Count == 0) 770createNodePending = CreateNewNodeIfPossible(responses, _schedulingData.UnscheduledRequests); 776if (_schedulingData.ExecutingRequestsCount > 0 || _schedulingData.YieldingRequestsCount > 0) 780else if (_schedulingData.UnscheduledRequestsCount == 0 && 781_schedulingData.ReadyRequestsCount == 0 && 782_schedulingData.BlockedRequestsCount == 0) 787else if (_schedulingData.BlockedRequestsCount != 0) 798foreach (SchedulableRequest request in _schedulingData.BlockedRequests) 803ErrorUtilities.ThrowInternalError("Somehow no requests are currently executing, and at least one of the {0} requests blocked by in-progress requests is servicable by a currently existing node, but no circular dependency was detected ...", _schedulingData.BlockedRequestsCount); 810ErrorUtilities.ThrowInternalError("None of the {0} blocked requests can be serviced by currently existing nodes, but we aren't requesting a new one.", _schedulingData.BlockedRequestsCount); 813else if (_schedulingData.ReadyRequestsCount != 0) 816ErrorUtilities.ThrowInternalError("Somehow we have {0} requests which are ready to go but we didn't tell the nodes to continue.", _schedulingData.ReadyRequestsCount); 818else if (_schedulingData.UnscheduledRequestsCount != 0 && !createNodePending) 821ErrorUtilities.ThrowInternalError("Somehow we have {0} unassigned build requests but {1} of our nodes are free and we aren't requesting a new one...", _schedulingData.UnscheduledRequestsCount, idleNodes.Count); 829TraceScheduler("Requests scheduled: {0} Unassigned Requests: {1} Blocked Requests: {2} Unblockable Requests: {3} Free Nodes: {4}/{5} Responses: {6}", nodesFreeToDoWorkPriorToScheduling - idleNodes.Count, _schedulingData.UnscheduledRequestsCount, _schedulingData.BlockedRequestsCount, _schedulingData.ReadyRequestsCount, idleNodes.Count, _availableNodes.Count, responses.Count); 895_schedulingPlan = new SchedulingPlan(_configCache, _schedulingData); 896ReadSchedulingPlan(_schedulingData.GetRequestsByHierarchy(null).First().BuildRequest.SubmissionId); 987foreach (SchedulableRequest request in _schedulingData.UnscheduledRequestsWhichCanBeScheduled) 1040SchedulableRequest[] unscheduledRequests = _requestBufferPool.Rent(_schedulingData.UnscheduledRequestsCount); 1043SchedulingData.UnscheduledRequestsWhichCanBeScheduledEnumerator unscheduledRequestsRead = _schedulingData.UnscheduledRequestsWhichCanBeScheduled.GetEnumerator(); 1044while (numRead < _schedulingData.UnscheduledRequestsCount && unscheduledRequestsRead.MoveNext()) 1079IEnumerable<int> nodesByConfigurationCountAscending = _availableNodes.Keys.OrderBy(x => _schedulingData.GetConfigurationsCountByNode(x, excludeTraversals: true, _configCache)); 1091TraceScheduler("System load limit reached, cannot schedule new work. Executing: {0} Yielding: {1} Max Count: {2}", _schedulingData.ExecutingRequestsCount, _schedulingData.YieldingRequestsCount, _componentHost.BuildParameters.MaxNodeCount); 1095foreach (SchedulableRequest request in _schedulingData.UnscheduledRequestsWhichCanBeScheduled) 1117while (idleNodes.Count > 0 && _schedulingData.UnscheduledRequestsCount > 0) 1123foreach (SchedulableRequest unscheduledRequest in _schedulingData.UnscheduledRequestsWhichCanBeScheduled) 1125int requiredNodeId = _schedulingData.GetAssignedNodeForRequestConfiguration(unscheduledRequest.BuildRequest.ConfigurationId); 1159while (idleNodes.Count > 0 && _schedulingData.UnscheduledRequestsCount > 0) 1165foreach (SchedulableRequest unscheduledRequest in _schedulingData.UnscheduledRequestsWhichCanBeScheduled) 1167int requiredNodeId = _schedulingData.GetAssignedNodeForRequestConfiguration(unscheduledRequest.BuildRequest.ConfigurationId); 1207foreach (SchedulableRequest currentSchedulableRequest in _schedulingData.UnscheduledRequestsWhichCanBeScheduled) 1210int requiredNodeId = _schedulingData.GetAssignedNodeForRequestConfiguration(currentRequest.ConfigurationId); 1282foreach (SchedulableRequest unscheduledRequest in _schedulingData.UnscheduledRequestsWhichCanBeScheduled) 1311TraceScheduler("System load limit reached, cannot schedule new work. Executing: {0} Yielding: {1} Max Count: {2}", _schedulingData.ExecutingRequestsCount, _schedulingData.YieldingRequestsCount, _componentHost.BuildParameters.MaxNodeCount); 1315foreach (SchedulableRequest unscheduledRequest in _schedulingData.UnscheduledRequestsWhichCanBeScheduled) 1352configurationCountsByNode[availableNodeId] = _schedulingData.GetConfigurationsCountByNode(availableNodeId, true /* excludeTraversals */, _configCache); 1375TraceScheduler("System load limit reached, cannot schedule new work. Executing: {0} Yielding: {1} Max Count: {2}", _schedulingData.ExecutingRequestsCount, _schedulingData.YieldingRequestsCount, _componentHost.BuildParameters.MaxNodeCount); 1379foreach (SchedulableRequest request in _schedulingData.UnscheduledRequestsWhichCanBeScheduled) 1383int requiredNodeId = _schedulingData.GetAssignedNodeForRequestConfiguration(request.BuildRequest.ConfigurationId); 1438if (request.IsProxyBuildRequest() && nodeId != InProcNodeId && _schedulingData.CanScheduleRequestToNode(request, InProcNodeId)) 1461int implicitlyGrantedCores = Math.Max(1, (_schedulingData.ExecutingRequestsCount * _nodeCoreAllocationWeight) / 100); 1464int explicitlyGrantedCores = _schedulingData.ExplicitlyGrantedCores; 1481if (_schedulingData.ExecutingRequestsCount >= _componentHost.BuildParameters.MaxNodeCount) 1495return _schedulingData.ExecutingRequestsCount + 1496_schedulingData.YieldingRequestsCount + 1497_schedulingData.ExplicitlyGrantedCores >= limit; 1505if (_schedulingData.CanScheduleRequestToNode(request, nodeId)) 1544int assignedNodeForConfiguration = _schedulingData.GetAssignedNodeForRequestConfiguration(request.BuildRequest.ConfigurationId); 1688SchedulableRequest blockingRequest = _schedulingData.GetScheduledRequest(blocker.BlockingRequestId); 1788int assignedNodeId = _schedulingData.GetAssignedNodeForRequestConfiguration(request.ConfigurationId); 1794if (_schedulingData.GetRequestsAssignedToConfigurationCount(request.ConfigurationId) == 0) 1797_schedulingData.UnassignNodeForRequestConfiguration(request.ConfigurationId); 1806else if (_schedulingData.GetRequestsAssignedToConfigurationCount(request.ConfigurationId) > 0) 1809foreach (SchedulableRequest existingRequest in _schedulingData.GetRequestsAssignedToConfiguration(request.ConfigurationId)) 1870SchedulableRequest blockingRequest = _schedulingData.CreateRequest(requestToAdd, parentRequest); 1885foreach (SchedulableRequest request in _schedulingData.GetReadyRequestsByNode(nodeId)) 1934if (!_schedulingData.IsNodeWorking(response.NodeId)) 1981TraceScheduler("System load limit reached, cannot resume any more work. Executing: {0} Yielding: {1} Max Count: {2}", _schedulingData.ExecutingRequestsCount, _schedulingData.YieldingRequestsCount, _componentHost.BuildParameters.MaxNodeCount); 1986if (_schedulingData.IsNodeWorking(nodeId)) 1998_schedulingData.UnscheduledRequests, _schedulingData.UnscheduledRequestsCount, out int numRead); 2038string parentProjectFullPath = GetParentConfigurationId(request, _configCache, _schedulingData).ProjectFullPath; 2057BuildRequestConfiguration parentConfig = GetParentConfigurationId(request, _configCache, _schedulingData); 2201int nodeId = _schedulingData.GetAssignedNodeForRequestConfiguration(request.ConfigurationId); 2252if (_schedulingData.CanScheduleConfigurationToNode(request.ConfigurationId, InProcNodeId) && request.IsProxyBuildRequest()) 2325|| _schedulingData.GetRequestsAssignedToConfigurationCount(request.ConfigurationId) == 0) 2334foreach (SchedulableRequest existingRequest in _schedulingData.GetRequestsAssignedToConfiguration(request.ConfigurationId)) 2439foreach (SchedulingData.SchedulingEvent buildEvent in _schedulingData.BuildEvents) 2644List<SchedulableRequest> childRequests = new List<SchedulableRequest>(_schedulingData.GetRequestsByHierarchy(request)); 2680file.Write("{0}({1})-{2}: ", Thread.CurrentThread.Name, Environment.CurrentManagedThreadId, _schedulingData.EventTime.Ticks); 2698if (_schedulingData != null) 2722file.WriteLine("Scheduler state at timestamp {0}:", _schedulingData.EventTime.Ticks); 2730_schedulingData.IsNodeWorking(nodeId) 2734_schedulingData.GetExecutingRequestByNode(nodeId) 2737_schedulingData.GetScheduledRequestsCountByNode(nodeId), 2738_schedulingData.GetConfigurationsCountByNode(nodeId, false, null)); 2740List<SchedulableRequest> scheduledRequestsByNode = new List<SchedulableRequest>(_schedulingData.GetScheduledRequestsByNode(nodeId)); 2749if (!_schedulingData.IsNodeWorking(nodeId)) 2799if (_schedulingData.UnscheduledRequestsCount == 0) 2807foreach (SchedulableRequest request in _schedulingData.UnscheduledRequests) 2830if (_schedulingData != null) 2839List<int> configurations = new List<int>(_schedulingData.Configurations); 2844file.WriteLine("Config {0} Node {1} TV: {2} File {3}", config, _schedulingData.GetAssignedNodeForRequestConfiguration(config), _configCache[config].ToolsVersion, _configCache[config].ProjectFullPath); 2870if (_schedulingData != null) 2895foreach (SchedulableRequest child in _schedulingData.GetRequestsByHierarchy(root)) 2937_schedulingData.GetAssignedNodeForRequestConfiguration(buildRequest.ConfigurationId), 2938_schedulingData.IsRequestScheduled(request) 2952SchedulingPlan plan = new SchedulingPlan(_configCache, _schedulingData); 2961_schedulingPlan = new SchedulingPlan(_configCache, _schedulingData);