resource leak - Diagnosing Cause of 100% CPU Usage by "System" Process -


I have a Windows Server application, which has been implemented in C ++ using the Win32 API, which is very much C serial and TCP / IP communication. As soon as it moves, the CPU usage increases gradually, until it reaches 100%. The task manager indicates that most of the CPU usage (> 75%) is from the "system" process. If I kill my server process, then CPU usage comes back to normal.

Are there really "easy" ways to diagnose the problem?

I suspect that I / O connections are being opened and are never closed, so the OS is spending more time in fulfilling those requests, but I can not I want to verify before correcting it.


Update: After playing with xperf , I have found that the process of system is more than half of its time in ntoskrnl.exe! KxWaitForSpinLockAndAcquire is spending . I do not know anything about it, but the name of the function suggests to me that there could be a deadlock / dispute problem.

In other tasks the system is using a lot of NETIO.SYS! FilterMatchEnum , NETIO.SYS! MatchConditionOverlap , NETIO.SYS! IsFilterVisible , and MpNWMon.sys! NetFlowUpendByCompletionHandle .

If you are not already, then I recommend checking the device.

There is a tool like I too much of the equipment, which shows you all the files which are open in the system.

Any other that applies directly to your scenario, which allows you to dump the process information when more than the given process, x% of the CPU usage


Comments

Popular posts from this blog

c# - sqlDecimal to decimal clr stored procedure Unable to cast object of type 'System.Data.SqlTypes.SqlDecimal' to type 'System.IConvertible' -

Calling GetGUIThreadInfo from Outlook VBA -

Obfuscating Python code? -