29

Has someone used a configuration enabling the garbage collector optimized for multi-processor machines using Aspnet.config with :

<gcServer enabled="true"/>
<gcConcurrent enabled="true"/>

Was there an improvement in the performance of your site?
Are any problems noticed?

Jehof
  • 34,674
  • 10
  • 123
  • 155
lsalamon
  • 7,998
  • 6
  • 50
  • 63

3 Answers3

25

First, Concurrent and Server are mutually exclusive options. See this blog post for some details on server GC misconceptions. However, ASP.NET, by default, hosts the server GC (see Scott Hanselman's discussion), so there will be no difference there.

I'd recommend sticking with server instead of concurrent for an ASP.NET website. For a user-mode application, the concurrent GC has been user responsiveness, since the server gc will cause "hangs".

I have used the server GC, and noticed significant improvements in certain situations.

The server mode GC does help user apps, though, if you're user application is working with huge memory pools, and getting highly fragmented.

Reed Copsey
  • 554,122
  • 78
  • 1,158
  • 1,373
  • 11
    This is changing in 4.5, which introduces **server concurrent GC**: http://msdn.microsoft.com/en-us/library/ms229357.aspx – skolima Aug 03 '12 at 11:32
  • 1
    @skolima Yes - again, though, you just leave it "server", and it automatically uses the new concurrent server GC – Reed Copsey Aug 03 '12 at 17:51
5

(very old question, I know, but I thought to add this anyway)

There's one major difference between Server GC and Concurrent GC: the Server GC has one thread per processor and suspends the threads on that processor when doing a collection, the server Concurrent GC thread runs in parallel with the other threads, i.e., no suspension. See this MSDN article for more info and more subtle differences.

Depending on the time a cycle takes, this can make a rather big difference in user responsiveness of your application, so choose wisely. In case of ASP.NET, which does not have a UI, Server GC is the better (and default) option.

Abel
  • 56,041
  • 24
  • 146
  • 247
2

Simply put, the Workstation GC mode improves performance for a single user, while the server GC mode is designed for use on a program that has multiple requests all the time. I truly hope that this question isn't a symptom of a much larger problem. sometimes when people start questioning the garbage collector it's because they're not seeing memory footprint that they were expecting. don't expect great gains with a different garbage collector. In almost all the tests I've done, it's made little difference which collector you are using.

SamuelWarren
  • 1,449
  • 13
  • 28