First thing to check would be indeed the app.config
making sure the necessary options are set:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<gcServer enabled="true" />
<Thread_UseAllCpuGroups enabled="true" />
<GCCpuGroup enabled="true" />
</runtime>
<startup>
<!-- 4.5 and later should work, use the one targeted -->
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2"/>
</startup>
</configuration>
If app.config
-Wizadry isn't helping, is likely that your machine uses multiple kernel groups (Kgroups) when it shouldn't. You can then check your BIOS for NUMA Group Size Optimization
if you have Gen9 HP. If it is in Clustered
mode, the current CLR (2017, .net 4.6.2) only utilizes the first one. If you have no more than 64 cores in that machine, you should be able select the Flat
layout which puts all cores in the same group. If you cannot find it, you may need a BIOS Update.
For lot more details see Unable to use more than one processor group for my threads in a C# app here on StackOverflow. It even comes with its own diagnostics tool.