Cache performance in ASP.NET 2.0



Hi,

We have recently upgraded an application from .NET 1.1 to .NET 2.0.
It is a medium size enterprise application that makes quite heavy use
of the ASP.NET caching API to improve performance. Since moving
to .NET 2.0 we have observed a marked degradation in performance in
certain areas of code. In particular one function which accesses the
cache within a For loop seems to take considerably longer under high
load conditions. Under normal load there doesn't appear to be any
difference in performance. Extensive investigations have shown the
under high load the CPU of the web server is not maxed out, but
performance of the application drops off. I have investigated the
cause of this and it appears to be to do with contention on the cache
between multiple worker threads. On examining the framework code with
reflector there do seem to be some changes around locking between .NET
1.1 and .NET 2.0: specifically the addition of a new method
WaitInsertBlock inside the class CacheSingle. Can anyone give me any
information about how the functionality has changed between the
framework versions and whether it is a likely cause of the problems
I'm experiencing.

Thanks,

Rob

.



Relevant Pages

  • 2.6: Load average calculation?
    ... Note the high load average and the mostly idle CPU %age. ... network interface through which all the ftp and http traffic is flowing ... average denies service to other parts of the system. ...
    (Linux-Kernel)
  • V880 weirdness
    ... GAB seems to report a high load.. ... ifconfig -a, and it hang.. ... It's running Solaris 8 and VCS 1.3.0. ...
    (SunManagers)
  • Re: Runnable threads on run queue
    ... At times of very high load the number of processes on the run queue drops to ... spamassassins as it can... ... The load average went through the roof, ...
    (Linux-Kernel)
  • Re: 2.6.1 and irq balancing
    ... creating a great deal of load does not change these statistics ... Being that there are patches available for 2.4.x kernels to ... high load on eth1 and I see we have some change: ... send the line "unsubscribe linux-kernel" in ...
    (Linux-Kernel)