Just wondering if someone can help me with a problem with garbage collection
that I seem to have:

I have a client/server system where the clients are experiencing quite long
delays because of bad performance on the server. The server uses Windows
Server 2003 with the .NET v1.1 Service Pack 1 update. I have used the
Performance utility on the server during these bad performance periods and
have noticed that there is a lot of time spent in the garbage collection.

Does anyone know why this might be?

***
More detail:
The nature of our system involves a lot of large objects (85KB+) being used
and the large object heap size reflects this. There also seems to be a lot
of garbage collection happening in the large object heap which I feel maybe
our problem. If the average size of one of our objects is larger than the
Generation 2 threshold (which it could easily be if the threshold is around
10MB) then as soon as our object is on the heap then it will result in a
garbage collection. This means that everytime one of our large objects goes
on the heap, there is a corresponding garbage collection (this is just guess
work though)...that would make an awful lot of garbage collections going on.

I have read up about the issue with mscorwks.dll being used for garbage
collection on a multiprocessor server. Typing in "tasklist /m mscorwks.dll"
brings a list of our applications running under this DLL.

The server I have is dual proccesor, thus I installed the .NET v1.1. SP1 to
update the config settings so mscorsvr.dll would be used instead and enable
the multiprocessor garbage collection. This has not made any noticeable
difference with performance. However, typing in the above command still
indicated our applications were running under the mscorwks.dll.

I have also tried the gcConcurrent setting as well and this has not made any
difference either.
***

It would be much appreciated if anyone can help with this problem?

Thanks

Milan

RE: Slow performance with garbage collection by clyon

clyon
Mon Jan 10 13:55:10 CST 2005

Hi Milan

The .NET runtime will not choose server GC unless explicitly told you. There are two ways to do this:
1. add <GCSERVER enabled="true" /> to your application's config file (available in .NET 1.1 SP1)
2. create an unmanaged host for your app and select Server GC there.

Further reading:
http://weblogs.asp.net/clyon/archive/2004/09/08/226981.aspx
http://weblogs.asp.net/clyon/archive/2004/09/10/228104.aspx

Hope that helps
-Chris

--------------------

>
>Just wondering if someone can help me with a problem with garbage collection
>that I seem to have:
>
>I have a client/server system where the clients are experiencing quite long
>delays because of bad performance on the server. The server uses Windows
>Server 2003 with the .NET v1.1 Service Pack 1 update. I have used the
>Performance utility on the server during these bad performance periods and
>have noticed that there is a lot of time spent in the garbage collection.
>
>Does anyone know why this might be?
>
>***
>More detail:
>The nature of our system involves a lot of large objects (85KB+) being used
>and the large object heap size reflects this. There also seems to be a lot
>of garbage collection happening in the large object heap which I feel maybe
>our problem. If the average size of one of our objects is larger than the
>Generation 2 threshold (which it could easily be if the threshold is around
>10MB) then as soon as our object is on the heap then it will result in a
>garbage collection. This means that everytime one of our large objects goes
>on the heap, there is a corresponding garbage collection (this is just guess
>work though)...that would make an awful lot of garbage collections going on.
>
>I have read up about the issue with mscorwks.dll being used for garbage
>collection on a multiprocessor server. Typing in "tasklist /m mscorwks.dll"
>brings a list of our applications running under this DLL.
>
>The server I have is dual proccesor, thus I installed the .NET v1.1. SP1 to
>update the config settings so mscorsvr.dll would be used instead and enable
>the multiprocessor garbage collection. This has not made any noticeable
>difference with performance. However, typing in the above command still
>indicated our applications were running under the mscorwks.dll.
>
>I have also tried the gcConcurrent setting as well and this has not made any
>difference either.
>***
>
>It would be much appreciated if anyone can help with this problem?
>
>Thanks
>
>Milan
>
>
>


--

This posting is provided "AS IS" with no warranties, and confers no rights. Use of included script samples are subject to the terms specified at
http://www.microsoft.com/info/cpyright.htm

Note: For the benefit of the community-at-large, all responses to this message are best directed to the newsgroup/thread from which they originated.


Re: Slow performance with garbage collection by Milan

Milan
Tue Jan 11 02:56:54 CST 2005

Hi Chris

I had already made that change in the machine.config file but no luck.
Thanks

regards
Milan

""Chris Lyon [MSFT]"" <clyon@online.microsoft.com> wrote in message
news:0Yxdw509EHA.2680@cpmsftngxa10.phx.gbl...
> Hi Milan
>
> The .NET runtime will not choose server GC unless explicitly told you.
There are two ways to do this:
> 1. add <GCSERVER enabled="true" /> to your application's config file
(available in .NET 1.1 SP1)
> 2. create an unmanaged host for your app and select Server GC there.
>
> Further reading:
> http://weblogs.asp.net/clyon/archive/2004/09/08/226981.aspx
> http://weblogs.asp.net/clyon/archive/2004/09/10/228104.aspx
>
> Hope that helps
> -Chris
>
> --------------------
>
> >
> >Just wondering if someone can help me with a problem with garbage
collection
> >that I seem to have:
> >
> >I have a client/server system where the clients are experiencing quite
long
> >delays because of bad performance on the server. The server uses Windows
> >Server 2003 with the .NET v1.1 Service Pack 1 update. I have used the
> >Performance utility on the server during these bad performance periods
and
> >have noticed that there is a lot of time spent in the garbage collection.
> >
> >Does anyone know why this might be?
> >
> >***
> >More detail:
> >The nature of our system involves a lot of large objects (85KB+) being
used
> >and the large object heap size reflects this. There also seems to be a
lot
> >of garbage collection happening in the large object heap which I feel
maybe
> >our problem. If the average size of one of our objects is larger than the
> >Generation 2 threshold (which it could easily be if the threshold is
around
> >10MB) then as soon as our object is on the heap then it will result in a
> >garbage collection. This means that everytime one of our large objects
goes
> >on the heap, there is a corresponding garbage collection (this is just
guess
> >work though)...that would make an awful lot of garbage collections going
on.
> >
> >I have read up about the issue with mscorwks.dll being used for garbage
> >collection on a multiprocessor server. Typing in "tasklist /m
mscorwks.dll"
> >brings a list of our applications running under this DLL.
> >
> >The server I have is dual proccesor, thus I installed the .NET v1.1. SP1
to
> >update the config settings so mscorsvr.dll would be used instead and
enable
> >the multiprocessor garbage collection. This has not made any noticeable
> >difference with performance. However, typing in the above command still
> >indicated our applications were running under the mscorwks.dll.
> >
> >I have also tried the gcConcurrent setting as well and this has not made
any
> >difference either.
> >***
> >
> >It would be much appreciated if anyone can help with this problem?
> >
> >Thanks
> >
> >Milan
> >
> >
> >
>
>
> --
>
> This posting is provided "AS IS" with no warranties, and confers no
rights. Use of included script samples are subject to the terms specified at
> http://www.microsoft.com/info/cpyright.htm
>
> Note: For the benefit of the community-at-large, all responses to this
message are best directed to the newsgroup/thread from which they
originated.
>



Re: Slow performance with garbage collection by clyon

clyon
Tue Jan 11 12:18:43 CST 2005

Hi Milan

You'll need to add the line to your application's config file, not your machine.config file for it to work.

-Chris

--------------------
>
>Hi Chris
>
>I had already made that change in the machine.config file but no luck.
>Thanks
>
>regards
>Milan
>
>""Chris Lyon [MSFT]"" <clyon@online.microsoft.com> wrote in message
>news:0Yxdw509EHA.2680@cpmsftngxa10.phx.gbl...
>> Hi Milan
>>
>> The .NET runtime will not choose server GC unless explicitly told you.
>There are two ways to do this:
>> 1. add <GCSERVER enabled="true" /> to your application's config file
>(available in .NET 1.1 SP1)
>> 2. create an unmanaged host for your app and select Server GC there.
>>
>> Further reading:
>> http://weblogs.asp.net/clyon/archive/2004/09/08/226981.aspx
>> http://weblogs.asp.net/clyon/archive/2004/09/10/228104.aspx
>>
>> Hope that helps
>> -Chris
>>
>> --------------------
>>
>> >
>> >Just wondering if someone can help me with a problem with garbage
>collection
>> >that I seem to have:
>> >
>> >I have a client/server system where the clients are experiencing quite
>long
>> >delays because of bad performance on the server. The server uses Windows
>> >Server 2003 with the .NET v1.1 Service Pack 1 update. I have used the
>> >Performance utility on the server during these bad performance periods
>and
>> >have noticed that there is a lot of time spent in the garbage collection.
>> >
>> >Does anyone know why this might be?
>> >
>> >***
>> >More detail:
>> >The nature of our system involves a lot of large objects (85KB+) being
>used
>> >and the large object heap size reflects this. There also seems to be a
>lot
>> >of garbage collection happening in the large object heap which I feel
>maybe
>> >our problem. If the average size of one of our objects is larger than the
>> >Generation 2 threshold (which it could easily be if the threshold is
>around
>> >10MB) then as soon as our object is on the heap then it will result in a
>> >garbage collection. This means that everytime one of our large objects
>goes
>> >on the heap, there is a corresponding garbage collection (this is just
>guess
>> >work though)...that would make an awful lot of garbage collections going
>on.
>> >
>> >I have read up about the issue with mscorwks.dll being used for garbage
>> >collection on a multiprocessor server. Typing in "tasklist /m
>mscorwks.dll"
>> >brings a list of our applications running under this DLL.
>> >
>> >The server I have is dual proccesor, thus I installed the .NET v1.1. SP1
>to
>> >update the config settings so mscorsvr.dll would be used instead and
>enable
>> >the multiprocessor garbage collection. This has not made any noticeable
>> >difference with performance. However, typing in the above command still
>> >indicated our applications were running under the mscorwks.dll.
>> >
>> >I have also tried the gcConcurrent setting as well and this has not made
>any
>> >difference either.
>> >***
>> >
>> >It would be much appreciated if anyone can help with this problem?
>> >
>> >Thanks
>> >
>> >Milan
>> >
>> >
>> >
>>
>>
>> --
>>
>> This posting is provided "AS IS" with no warranties, and confers no
>rights. Use of included script samples are subject to the terms specified at
>> http://www.microsoft.com/info/cpyright.htm
>>
>> Note: For the benefit of the community-at-large, all responses to this
>message are best directed to the newsgroup/thread from which they
>originated.
>>
>
>
>


--

This posting is provided "AS IS" with no warranties, and confers no rights. Use of included script samples are subject to the terms specified at
http://www.microsoft.com/info/cpyright.htm

Note: For the benefit of the community-at-large, all responses to this message are best directed to the newsgroup/thread from which they originated.


Re: Slow performance with garbage collection by dmako

dmako
Mon Mar 14 09:35:06 CST 2005

Chris;

This new gcServer parameter for the 1.1 SP-1 Framework, were is there any
documantation from Microsoft on it?

It seems to work, but I can not find any Microsoft doc. It it FULLY supported?

PS: it also works under FW 1.0 SP-3, right?



""Chris Lyon [MSFT]"" wrote:

> Hi Milan
>
> You'll need to add the line to your application's config file, not your machine.config file for it to work.
>
> -Chris
>
> --------------------
> >
> >Hi Chris
> >
> >I had already made that change in the machine.config file but no luck.
> >Thanks
> >
> >regards
> >Milan
> >
> >""Chris Lyon [MSFT]"" <clyon@online.microsoft.com> wrote in message
> >news:0Yxdw509EHA.2680@cpmsftngxa10.phx.gbl...
> >> Hi Milan
> >>
> >> The .NET runtime will not choose server GC unless explicitly told you.
> >There are two ways to do this:
> >> 1. add <GCSERVER enabled="true" /> to your application's config file
> >(available in .NET 1.1 SP1)
> >> 2. create an unmanaged host for your app and select Server GC there.
> >>
> >> Further reading:
> >> http://weblogs.asp.net/clyon/archive/2004/09/08/226981.aspx
> >> http://weblogs.asp.net/clyon/archive/2004/09/10/228104.aspx
> >>
> >> Hope that helps
> >> -Chris
> >>
> >> --------------------
> >>
> >> >
> >> >Just wondering if someone can help me with a problem with garbage
> >collection
> >> >that I seem to have:
> >> >
> >> >I have a client/server system where the clients are experiencing quite
> >long
> >> >delays because of bad performance on the server. The server uses Windows
> >> >Server 2003 with the .NET v1.1 Service Pack 1 update. I have used the
> >> >Performance utility on the server during these bad performance periods
> >and
> >> >have noticed that there is a lot of time spent in the garbage collection.
> >> >
> >> >Does anyone know why this might be?
> >> >
> >> >***
> >> >More detail:
> >> >The nature of our system involves a lot of large objects (85KB+) being
> >used
> >> >and the large object heap size reflects this. There also seems to be a
> >lot
> >> >of garbage collection happening in the large object heap which I feel
> >maybe
> >> >our problem. If the average size of one of our objects is larger than the
> >> >Generation 2 threshold (which it could easily be if the threshold is
> >around
> >> >10MB) then as soon as our object is on the heap then it will result in a
> >> >garbage collection. This means that everytime one of our large objects
> >goes
> >> >on the heap, there is a corresponding garbage collection (this is just
> >guess
> >> >work though)...that would make an awful lot of garbage collections going
> >on.
> >> >
> >> >I have read up about the issue with mscorwks.dll being used for garbage
> >> >collection on a multiprocessor server. Typing in "tasklist /m
> >mscorwks.dll"
> >> >brings a list of our applications running under this DLL.
> >> >
> >> >The server I have is dual proccesor, thus I installed the .NET v1.1. SP1
> >to
> >> >update the config settings so mscorsvr.dll would be used instead and
> >enable
> >> >the multiprocessor garbage collection. This has not made any noticeable
> >> >difference with performance. However, typing in the above command still
> >> >indicated our applications were running under the mscorwks.dll.
> >> >
> >> >I have also tried the gcConcurrent setting as well and this has not made
> >any
> >> >difference either.
> >> >***
> >> >
> >> >It would be much appreciated if anyone can help with this problem?
> >> >
> >> >Thanks
> >> >
> >> >Milan
> >> >
> >> >
> >> >
> >>
> >>
> >> --
> >>
> >> This posting is provided "AS IS" with no warranties, and confers no
> >rights. Use of included script samples are subject to the terms specified at
> >> http://www.microsoft.com/info/cpyright.htm
> >>
> >> Note: For the benefit of the community-at-large, all responses to this
> >message are best directed to the newsgroup/thread from which they
> >originated.
> >>
> >
> >
> >
>
>
> --
>
> This posting is provided "AS IS" with no warranties, and confers no rights. Use of included script samples are subject to the terms specified at
> http://www.microsoft.com/info/cpyright.htm
>
> Note: For the benefit of the community-at-large, all responses to this message are best directed to the newsgroup/thread from which they originated.
>
>

Re: Slow performance with garbage collection by clyon

clyon
Tue Mar 15 12:37:55 CST 2005

Hi Milan

Yes, this is the only fully supported way to specify server GC on a per-app
basis without an unmanaged host. Besides MSDN blogs, you can find
information about this setting at
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/
scalenetchapt06.asp

No, this feature is not present in v1.0 SP3.

-Chris

--------------------

|
| Chris;
|
| This new gcServer parameter for the 1.1 SP-1 Framework, were is there any
| documantation from Microsoft on it?
|
| It seems to work, but I can not find any Microsoft doc. It it FULLY
supported?
|
| PS: it also works under FW 1.0 SP-3, right?
|
|
|
| ""Chris Lyon [MSFT]"" wrote:
|
| > Hi Milan
| >
| > You'll need to add the line to your application's config file, not your
machine.config file for it to work.
| >
| > -Chris
| >
| > --------------------
| > >
| > >Hi Chris
| > >
| > >I had already made that change in the machine.config file but no luck.
| > >Thanks
| > >
| > >regards
| > >Milan
| > >
| > >""Chris Lyon [MSFT]"" <clyon@online.microsoft.com> wrote in message
| > >news:0Yxdw509EHA.2680@cpmsftngxa10.phx.gbl...
| > >> Hi Milan
| > >>
| > >> The .NET runtime will not choose server GC unless explicitly told
you.
| > >There are two ways to do this:
| > >> 1. add <GCSERVER enabled="true" /> to your application's config file
| > >(available in .NET 1.1 SP1)
| > >> 2. create an unmanaged host for your app and select Server GC there.
| > >>
| > >> Further reading:
| > >> http://weblogs.asp.net/clyon/archive/2004/09/08/226981.aspx
| > >> http://weblogs.asp.net/clyon/archive/2004/09/10/228104.aspx
| > >>
| > >> Hope that helps
| > >> -Chris
| > >>
| > >> --------------------
| > >>
| > >> >
| > >> >Just wondering if someone can help me with a problem with garbage
| > >collection
| > >> >that I seem to have:
| > >> >
| > >> >I have a client/server system where the clients are experiencing
quite
| > >long
| > >> >delays because of bad performance on the server. The server uses
Windows
| > >> >Server 2003 with the .NET v1.1 Service Pack 1 update. I have used
the
| > >> >Performance utility on the server during these bad performance
periods
| > >and
| > >> >have noticed that there is a lot of time spent in the garbage
collection.
| > >> >
| > >> >Does anyone know why this might be?
| > >> >
| > >> >***
| > >> >More detail:
| > >> >The nature of our system involves a lot of large objects (85KB+)
being
| > >used
| > >> >and the large object heap size reflects this. There also seems to
be a
| > >lot
| > >> >of garbage collection happening in the large object heap which I
feel
| > >maybe
| > >> >our problem. If the average size of one of our objects is larger
than the
| > >> >Generation 2 threshold (which it could easily be if the threshold is
| > >around
| > >> >10MB) then as soon as our object is on the heap then it will result
in a
| > >> >garbage collection. This means that everytime one of our large
objects
| > >goes
| > >> >on the heap, there is a corresponding garbage collection (this is
just
| > >guess
| > >> >work though)...that would make an awful lot of garbage collections
going
| > >on.
| > >> >
| > >> >I have read up about the issue with mscorwks.dll being used for
garbage
| > >> >collection on a multiprocessor server. Typing in "tasklist /m
| > >mscorwks.dll"
| > >> >brings a list of our applications running under this DLL.
| > >> >
| > >> >The server I have is dual proccesor, thus I installed the .NET
v1.1. SP1
| > >to
| > >> >update the config settings so mscorsvr.dll would be used instead and
| > >enable
| > >> >the multiprocessor garbage collection. This has not made any
noticeable
| > >> >difference with performance. However, typing in the above command
still
| > >> >indicated our applications were running under the mscorwks.dll.
| > >> >
| > >> >I have also tried the gcConcurrent setting as well and this has not
made
| > >any
| > >> >difference either.
| > >> >***
| > >> >
| > >> >It would be much appreciated if anyone can help with this problem?
| > >> >
| > >> >Thanks
| > >> >
| > >> >Milan
| > >> >
| > >> >
| > >> >
| > >>
| > >>
| > >> --
| > >>
| > >> This posting is provided "AS IS" with no warranties, and confers no
| > >rights. Use of included script samples are subject to the terms
specified at
| > >> http://www.microsoft.com/info/cpyright.htm
| > >>
| > >> Note: For the benefit of the community-at-large, all responses to
this
| > >message are best directed to the newsgroup/thread from which they
| > >originated.
| > >>
| > >
| > >
| > >
| >
| >
| > --
| >
| > This posting is provided "AS IS" with no warranties, and confers no
rights. Use of included script samples are subject to the terms specified
at
| > http://www.microsoft.com/info/cpyright.htm
| >
| > Note: For the benefit of the community-at-large, all responses to this
message are best directed to the newsgroup/thread from which they
originated.
| >
| >
|