-
Dual proc running slower
My company recently setup a new web server. Since installing a second processor the system is actually running slower than with the single proc. Why would this be?
The processes we use for comparison are simple file parsings for our website file uploads. With identical data the system takes 30 to 45 seconds more to parse since adding the second proc.
System is a Compaq Proliant ML350. Dual PIII 1Ghz, 768MB RAM, SCSI3 18GB HDD(single...no RAID), Win2K Server w/ IIS 5.0 (all patches & updates installed). System recognizes the second proc and Windows has been configured for ACPI Multiprocessor.
Ideas?
-
[quote]Originally posted by Deity:
<strong>My company recently setup a new web server. Since installing a second processor the system is actually running slower than with the single proc. Why would this be?
The processes we use for comparison are simple file parsings for our website file uploads. With identical data the system takes 30 to 45 seconds more to parse since adding the second proc.
System is a Compaq Proliant ML350. Dual PIII 1Ghz, 768MB RAM, SCSI3 18GB HDD(single...no RAID), Win2K Server w/ IIS 5.0 (all patches & updates installed). System recognizes the second proc and Windows has been configured for ACPI Multiprocessor.
Ideas?</strong><hr></blockquote>
Nothing I can really offer except that I have a dual p350 - the speed difference is VERY noticeable between 2k and xp - so perhaps you should try xp on it?
I assume you have done the usual resetting of cmos and configuration when you added the processor...
-
[quote]Originally posted by NooNoo:
<strong>
Nothing I can really offer except that I have a dual p350 - the speed difference is VERY noticeable between 2k and xp - so perhaps you should try xp on it?
I assume you have done the usual resetting of cmos and configuration when you added the processor...</strong><hr></blockquote>
XP really isn't an option as this system will function as our corporate web server running high-powered ASP scripts from IIS 5. As for the CMOS, I believe I have set everything properly, but it doesn't hurt to double check.
-
Double checked the CMOS and Windows configuration and the second proc is recognized and setup properly to my knowlegde. <img src="confused.gif" border="0">
-
First thing, are you absolutely certain that Windows is seeing the second processor? Easiest way to check would be under performance tab in task manager. Under view/CPU history, there will be an option to view the processors independently. Look there for starters, you could also gain a baseline for how the processors are performing, also during your tests.
I don't know if Performance Monitor (perfmon.exe, or perfmon.msc) will give you options to graph the two processors, if it can, you could baseline there as well, and generate logs that can help you out.
The only thing I found in the MSKB was in reference to NT4 and IIS4. It said that SP4 for that OS was the first to correct the problem. This was not related to your issue, so I really don't know where else to start looking right now...
-
Deity...
Did you install the second CPU AFTER Windows was installed? Sometimes it's better to install all the hardware first and then install the bloatware of your choice.
I'd ghost it and then re-install and see if that's any better.
-
Typically, the HAL doesnt fully realize the potential of the 2nd processor, esp. since some tasks arent written to take about of that capability. Make sure that the performance is set to boost programs and not background processes, as this will slow things down as well. If all else fails, simply reinstall the OS on it, and start from there.
-
If I remember from the last Compaq I set up there is a certain order and config for the memory so each Proc gets it's own bank. It should be in you documentation for the processor or memory. (certain banks have priority for each processor. you may be trying to run 2 proc off 1 bank of RAM.) Just my .02
-
[quote]Originally posted by Deity:
<strong>...and Windows has been configured for ACPI Multiprocessor.
Ideas?</strong><hr></blockquote>
When you mentioned this, I presume you went down this path. Read the note at the end of the article. It may provide an answer.
<a href="http://support.microsoft.com/search/preview.aspx?scid=kb;en-us;Q234558" target="_blank">How to Add Support for Multiple Processors in Windows 2000 (Q234558)</a>
-
[quote]Originally posted by Ya_know:
<strong>
When you mentioned this, I presume you went down this path. Read the note at the end of the article. It may provide an answer.
<a href="http://support.microsoft.com/search/preview.aspx?scid=kb;en-us;Q234558" target="_blank">How to Add Support for Multiple Processors in Windows 2000 (Q234558)</a></strong><hr></blockquote>
Yes this is the method I used. The system was running ACPI Uniproc and was switched to ACPI Multiproc. The system does in fact recognize both procs. Both are listed in the system POST and both are displayed in Windows. I did run some performance logs comparing the two procs individually as you had suggested earlier. The results seem to vary though. While running these same parsing routines the first proc would run approx 20% more than the other. Yet another time the first ran 60% more than the other. Does anybody have any clarification on how dual procs run together? I've never really needed to know before now.
How do they balance the work load?
Do they each have specific tasks?
Are they supposed to run equally? If so, is it all the time or only under heavy loads?
Enlighten me oh fellow WinDrivers gurus!
-
You might want to run the latest Compaq SmartStart and update the drivers. Compaqs are touchy about drivers. Sometimes standard MS or vendor drivers work and sometimes only Compaq drivers (or a HAL) work.
-
[quote]Originally posted by Deity:
<strong>How do they balance the work load?
Do they each have specific tasks?
Are they supposed to run equally? If so, is it all the time or only under heavy loads?
</strong><hr></blockquote>
How do they balance the work load? --
in task manager - under the processes you can tell what process to run on what CPU (for the most part) its called set afidity (sp)
Do they each have specific tasks?
no, not unless you tell the services to run off of 1 cpu (which I don't think you can do)
Are they supposed to run equally? If so, is it all the time or only under heavy loads?
Yes and no.
Yes being if you have something that uses both processors, yes, it should use each equally (basically, it'll take whatever % its got left). If a program is NOT written for dual threads, it will usually take CPU0.
Hope this helps
-
Muchas gracias. :D
If I'm running several thousand IIS sessions will Win2K distribute the sessions between the procs automatically or will it treat the IIS app as a single process/thread?
-
I believe IIS runs a pool of threads that handle all requests. These threads are automatically scheduled on whatever processor is available. Its not 1 thread per request, but more like some mulitple of threads for each processor.
On the overall speed issue, how fast your system seems to run with single vs. dual procs depends on the software that is running on them. If the software is designed for multiple processors, then you will likely see a speed improvement. If its not, you could see a decrease because most multi-processor systems share the front side bus speed of the system, which means access to your memory, etc is a fraction of the whole, depending on how many CPUs you have. Also, since Windows now needs to synchronize shared memory and shared peripheral access, different code is used which actually executes slower than when only 1 CPU is used.
i.e. When an app goes to modify a byte of memory, on 1 CPU, the system doesn't have to lock anything because only 1 CPU can modify that memory at any given time. With multiple CPUs, the system needs to make sure that when 1 CPU modifies the memory location, the other one is prevented from doing so until the first one is finished.
When software is written to take advantage of multiple CPUs, it usually overcomes these preformance hits. When its not, these performance hits can degrade the overall speed of the system.
Hope this helps,
M
-
Dude!!! This was one of the test questions on my MCSE exam. Sorry I can't remember it but I will look it up and give you a ring back.
Late
-
I made the assumption that Win2K Server and IIS 5.0 were both designed to take advantage of dual procs. Maybe I was wrong. :rolleyes:
There are no other programs running on this system and the code we use to test is a simple ASP page that parses delimited files.
Damn this is frustrating. :mad:
-
Is it parsing the same file? And when parsing, is it writing to that file or another individual file? This could have the effect of serializing all of the threads down onto one processor. Then, because you've possibly halved the bandwidth to that one processor, it will be slower.
I'm not sure what ASP goes through when executing, but I would hope that it is multi-threaded, thus making use of multiple processors.
M
-
The tests I have been running are parsing the same file so there is no variance in the amount of content of the data. The system actually parses the files, pulls records and then either inserts or updates various databases.
-
I doubt there is anything wrong with the hardware. It is probably something about the way ASP is accessing the file or possibly the DB access afterward.
Can you watch the Performance Monitor and see if both procs are over 50% utilized? Typically, a single threaded app will show up as 2 procs pegged at 50%. If they peg higher, then the system is just being overworked. If they are both very low, then the software is likely being delayed by disk access or some other hardware event.
M
-
This is for clarification. Someone raised the question of how Windows assigns work to the processors in a multiprocessor configured system. Windows will assign a thread to a processor if the processor is available and the thread is ready to run, unless the thread has a processor affinity set for another processor, and it is set so high that Windows will actually hold the thread until the processor it wants to run on is ready. The only reason I can think you might want to do this is for synchronization, but there's no reason to use processor affinity if you know how to use mutexes and waits. Assigning a process a specific cpu probably limits all of its threads to that cpu as well, so you probably don't want to even touch this setting on a multithreaded application like IIS.
Which brings us to the second point. IIS is multithreaded, and it runs approximately 7 threads on a single proc machine (I think 8 on a multiproc). Logic would say two of those threads are for the backend work in IIS like interpreting and running ASP since you now have two processors to do this on, and the rest are for accepting requests and spewing pages. The threads that do the ASP work are your bottleneck, as well as the single file input. Here's a simple test, if you can swing it. Copy the ASP to another asp page and copy the input file as well. Tell the second asp page to use the second input file. Then send two simultaneous requests for the two pages and watch the cpu utilization. If one cpu is used, then the ASP engine is single-threaded and this is a design flaw on Microsquiggly's part. If both cpus spin like they should, then perhaps your single input file is the bottleneck. I'd say take out the database dependency, but if it's a single-threaded ASP engine you've got there then the database dependency could very well help you identify it (since the database operation would have to complete for the first request before it could even start on the second request).
-
Maybe you just need more processors. How about a Compaq 8500 ;-)
Seriously, 2000 scales pretty well. I've heard numbers around 80% efficiency up to 4 processors. You machine should not slow by adding a processor. From the earlier post it seemed like this is what was happening. If it is, you have a hardware/driver problem somewhere.
It just occured to me, is the processer the same? Is it the same stepping version? If not, the latest firmware for your box (Version 2001.08.04) addresses mixed stepping cpus.
Just a thought.
-
I had used Performance Monitor to view the proc usage during the parsing routine. Like I posted earlier, the results varied. One test, the first proc ran at 60% util and the second at 40%, while another test (on the same data) the first proc ran at 80% util and the second at 20%. As for the processors themselves, they are identical.
etaerine, I will try your suggestion about duplicating the page and data. I'll post the results once I've had a chance to test.
uugghhhh.....Monday morning. Need coffee...