Our production application makes use of .NET remoting and is unfortunately very chatty. At regular intervals (exactly every 10 minutes), we're seeing our processes' CPU utilization spike to about 10-18% and lasts about 1-2 minutes. Using Process Explorer, we've determined that the CPU spike is distributed across 2 or 3 of the same threads whose call stacks are generally within the context of low-level .NET remoting methods.

I then put together a very simple .NET remoting sample application that makes use of a single-call, remote service object using a TCPChannel. The client performs a method call on the remote object every 50 milliseconds and again, we see a CPU spike of about 5-6% every 10 minutes that lasts for about 5-10 seconds.

I know our implementation is in need an overhaul, but I'd like to understand what is ticking in Windows/CLR that is generating so much CPU overhead. We've monitored the network, garbage collection, synchronization, all sorts of stuff, but haven't yet been able to find the contributing factor.


Any ideas?