racette
February 14th, 2008, 02:47 PM
I have built a software that runs on Windows. This software uses the CPU quite a bit and uses named pipes to communicate with other processes.
I have found that the performance of my software greatly varies from one test platform to another. Also, in theory, I am suppose to achieve much better performance than what I observe in reality. I know my software has a bottleneck somewhere...now I need to find it.
I started monitoring different counters in the Windows system monitor (perfmon) and found some interesting values. Here is listed the values I got from these counters when running perfmon on one of the platform I have most trouble with. I won't list all counters, only those for which I have doubts that they hide my software's bottleneck. Here goes:
Threads\Context switch/sec : 2800 / sec on average
Processor\Interrupt/sec : 5400 / sec on average
The test platform is a P4 @ 1.8 Ghz with 1 Gb of RAM and a Gigabit network interface.
Here is my questions:
1- Are these values dramatically high?
2- Does that indicate that I have a problem with my software's design?
3- What would you suggest in order to minimize context switch and interrupts?
Thanks!
Benjamin
I have found that the performance of my software greatly varies from one test platform to another. Also, in theory, I am suppose to achieve much better performance than what I observe in reality. I know my software has a bottleneck somewhere...now I need to find it.
I started monitoring different counters in the Windows system monitor (perfmon) and found some interesting values. Here is listed the values I got from these counters when running perfmon on one of the platform I have most trouble with. I won't list all counters, only those for which I have doubts that they hide my software's bottleneck. Here goes:
Threads\Context switch/sec : 2800 / sec on average
Processor\Interrupt/sec : 5400 / sec on average
The test platform is a P4 @ 1.8 Ghz with 1 Gb of RAM and a Gigabit network interface.
Here is my questions:
1- Are these values dramatically high?
2- Does that indicate that I have a problem with my software's design?
3- What would you suggest in order to minimize context switch and interrupts?
Thanks!
Benjamin