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