revert CPU clipping to 3.0, 2.x behavior (#1851)
authorVladimir Sadov <vsadov@microsoft.com>
Fri, 17 Jan 2020 13:20:10 +0000 (05:20 -0800)
committerJan Kotas <jkotas@microsoft.com>
Fri, 17 Jan 2020 13:20:10 +0000 (05:20 -0800)
src/coreclr/src/classlibnative/bcltype/system.cpp
src/coreclr/src/pal/src/thread/process.cpp
src/coreclr/src/utilcode/util.cpp

index 402a215..1862114 100644 (file)
@@ -352,6 +352,13 @@ INT32 QCALLTYPE SystemNative::GetProcessorCount()
         processorCount = systemInfo.dwNumberOfProcessors;
     }
 
+#ifdef FEATURE_PAL
+    uint32_t cpuLimit;
+
+    if (PAL_GetCpuLimit(&cpuLimit) && cpuLimit < (uint32_t)processorCount)
+        processorCount = cpuLimit;
+#endif
+
     END_QCALL;
 
     return processorCount;
index 7333890..49c1291 100644 (file)
@@ -2547,6 +2547,12 @@ PAL_GetCPUBusyTime(
         {
             return 0;
         }
+
+        UINT cpuLimit;
+        if (PAL_GetCpuLimit(&cpuLimit) && cpuLimit < dwNumberOfProcessors)
+        {
+            dwNumberOfProcessors = cpuLimit;
+        }
     }
 
     if (getrusage(RUSAGE_SELF, &resUsage) == -1)
index 80cd00f..d3b3c74 100644 (file)
@@ -1289,6 +1289,10 @@ int GetCurrentProcessCpuCount()
 
 #else // !FEATURE_PAL
     count = PAL_GetLogicalCpuCountFromOS();
+
+    uint32_t cpuLimit;
+    if (PAL_GetCpuLimit(&cpuLimit) && cpuLimit < count)
+        count = cpuLimit;
 #endif // !FEATURE_PAL
 
     cCPUs = count;