.NET Garbage Collector design to support two distinct modes: server and workstation.
In server mode GC creates one GC heap and one relative GC thread for each processor. Each one of these threads performs collection in parallel. Server mode available on multi-processor machines only and shows good throughput and scalability.
Workstation mode is default and only one available on single processor machine. In FW 1.0 and 1.1 server mode can be used only in unmanaged hosting environment. ASP.NET for example loads web applications in server mode. In FW1.1 and 2.0 GC mode could be controlled by configuration file entry.
Following node in configuration mode switches GC into server mode:
<CONFIGURATION>
<RUNTIME>
<GCSERVER enabled="true" />
</RUNTIME>
</CONFIGURATION>
The first challenge is to recognize in what mode our server application GC is actually running. In FW1.x it is easy. Workstation mode GC loaded from mscorwks.dll, server mode GC will use mscorsrv.dll. You can use Task Manager or Process Explorer from www.sysinternals.com to check this. In FW 2.0 it is trickier. Both GC modes combined in mscorwks.dll.
Now we have new property GCSettings.IsServerGC which is return true in case that GC running in server mode.
The last tip is: be careful with your configuration file if you want to activate GC in server mode. If you'll try to use any non ASCII characters GC will be loaded gracefully in workstation mode regardless of gcServer tag. See this issue http://lab.msdn.microsoft.com/productfeedback/viewfeedback.aspx?feedbackid=55947061-2b06-4325-b1ef-bdfa9f0af9ec