Hi,
 
We're having a strange problem that seems to be related to garbage collection. We're 
performing load testing through a load generator tool (LoadRunner). At a certain load 
level, the response times show strange and heavy fluctuations. Request handling times 
go up by a factor 10 over an extended period of time (several minutes, up to 10 
minutes). Analysis of performance counters gave some interesting results:
 
*       Context switches go up heavily
*       Contention rate/sec (.NET CLR LocksAndThreads) goes up heavily
*       Time spent in GC (.NET CLR Memory) goes up heavily
*       Gen 0 heap size (.NET CLR Memory) falls back from fluctuating around 5MB to a 
flat 1MB
*       Gen 1 heap size (.NET CLR Memory) falls back from fluctuating around 850KB to 
nearly nearly flat 350KB
*       Gen 2 heap size (.NET CLR Memory) keeps fluctuating around 29MB. At one point, 
it goes up a few MBs in but this might be unrelated.
 
The test is running on a 4 processor server with 1.5GB RAM.
 
According to the documentation, the heap size for generation 0 is the upper limit on 
memory allocated in generation 0. When this limit is reached, garbage collection on 
generation 0 occurs. The garbage collector tunes this value.
 
Based on this and the numbers above, I come to the conclusion that the context 
switches are caused by garbage collection. For some to me unknown reason, the GC 
lowers its generation 0 heap size to a bare minimum. Due to that, it must collect like 
crazy, practically killing the system.
 
Can someone explain why this happens and how we can prevent it?
 
Thanks, Bert Roos
 

===================================
This list is hosted by DevelopMentor�  http://www.develop.com
Some .NET courses you may be interested in:

NEW! Guerrilla ASP.NET, 26 Jan 2004, in Los Angeles
http://www.develop.com/courses/gaspdotnetls

View archives and manage your subscription(s) at http://discuss.develop.com

Reply via email to