views:

71

answers:

4

We run a Fortran console program we have run for years. Recently we purchased identical new HP server class machines (4 processors, 8 gig ram, 4 hard drives) for everyone in the office. We configured them identically as nearly as we know. We can compile the Fortran program on one machine, pass the executable to the different machines, and on two machines it executes painfully slow, while on two others it has modest performance (but not as good as before we upgraded from XP machines).

It uses almost no console output (about 40 lines) but outputs about 15 megs of files.

We open task manager to see what's going on, and we see that on the slow machines it's loading ONE CPU to about 15%. On the fast machines it's loading ALL CPUs to about 40% (but one of them seems to load more than the others). As I recall, on XP it loaded the CPU to 99%, and ran much faster.

These machines are the employees' general purpose machines, and have lots of company bloatware on them. And there is the possibility they have slightly different directory structures. But what seems totally puzzling to me is why Vista is not giving them more CPU time. If the CPUs were loading up, I might blame the performance variation on different directory structures, but not loading up the CPUs just boggles my mind.

David

+1  A: 

if there's a bottleneck in IO, the CPU wouldn't be loaded as much because it's mostly waiting for the IO to take place. One could even imagine this to cause the one CPU vs many CPUs problem if there's just no point in kicking in another CPU because there's plenty of time between while waiting. What if you take an external HD and try out if the differences also take place if you run the same program on that HD on different machines?

Nicolas78
Good idea. I'll try it.
David Qualls
A: 

Vista had a problem with some uncontrollably memory leaks, perhaps this is your error, some conflict in the "bloatware" is causing a memory leak and so your Fortran program is running so much slower?

I assume you have tested this with all programs ended. It seems unlikely that your console program is the issue. Sounds like there's definitely a memory conflict going on though.

Daniel Hanly
+1  A: 

Please go into Windows task manager, Performance / - Select in [View] the option: [Kernel Times] and look what's displayed on the bars during program execution.

If its only 15% load on quad+hyperthreading box, that says basically, OpenMP, MPI (or whatever it uses) - isn't properly working - works on 1/8 => 15%. Can you run the MPI-test command for your specific system in order to check for errors in multiprocessing on each box? Therefore, the question would be - why does the multiprocessing environment not work?

Regards

rbo

rubber boots
This is an old app. It doesn't make any explicit MP calls, nor is it compiled with any kind of MP support other than what the Intel Fortran kicks in automatically (although we have "Parallelization" set to "No"). Frankly, I was surprised to see it using all 4 processors on ANY machine. I don't really understand why it is. It does allocated (statically) some REALLY HUGE arrays, and perhaps Intel Fortran is looking at those and exercising some default load sharing.
David Qualls
+1  A: 

SWAG, but have you checked your virus scanner configuration? If the scanner isn't set to ignore the type of file you're writing on the slow machine, then each write to those files might be getting intercepted and scanned before being written to the disk. This could lead to the process sitting in I/O wait and not getting scheduled as often.

TMN
I haven't checked, BUT, the virus scanner sucks CPU cycles big time. If that was the issue, I would think we'd be seeing lots of CPU activity.Good thought tho. Thanks. I'll ask IT to check the virus config.
David Qualls