D
Duncan, Eric A.
Ok, I've been going through the news group archives for a week now.
Read up on Intel's press releases, Tom's Hardware information on
Hyperthreading and RAMBUS, and Athlon's anti-hyperthreading hype. Etc
etc.
I only have a simple question. A question that may make a good valid
point that I can't seem to get answered anywhere. Seems to be one or
the other and every time someone gets close to saying the information
I need, they talk about a different configuration. Doh!
I have built two systems for a previous client using the Supermicro
P4DC6+ (dual P4 Xeon 400mhz FSB mobo) with dual P4 Xeons, and
Hyperthreading on (W2K Servers, shows 4 cpus, SQL Server, etc etc).
And I now have one for home that I am trying to optimize to the max,
hence the reason for all of the searching.
Some facts I've ran across:
* Hyperthreading turned ON in the bios, enables the OS to see two CPU
IDs per CPU in the system. If the system hardware has one CPU, the OS
will show two CPUs in task manager. If the system hardware has two
CPUs, the OS will show four CPUs in task manager.
Some people get a little confused with that statement. Here's a
screenshot of one of the dual P4 Xeons I setup. This system is
running only TWO P4 Xeon 1.7Ghz CPUs. Notice, it shows four CPUs.
This is due to Hyperthreading turned ON in the bios.
http://spoof3d.com/projects/microsoft/HT/smooth.gif
* Windows XP (and NT 4.0 Workstation and Windows 2000 Professional)
only supports two (2) CPUs in a multi processor machine.
* Windows XP supports Hyperthreading (have SP1a installed).
Ok the last one has me a bit confused of what exactly it supports, and
the reason for the question and/or point. First the problem with
running Hyperthreading on dual P4 Xeons and on either NT Workstation
or W2K Professional:
Isn't this a problem? Think about it. If the OS only supports two
CPUs and W2K/NT doesn't know any better, you only get two CPUs in task
manager.
Here's even a worse scenario. Intel provided the specs to
manufactures for their BIOS' to control this hyperthreading. There
are two ways the manufacturer can build the bios so to assign
processor IDs to the four virtual CPUs (hyperthreading). The first
being in consecutive order. Meaning it numbers the processor ids as
0, 1, 2, 3. Where 0 and 1 are on physical CPU #1, and IDs 2 and 3 are
on physical CPU #2. This is the worse setup ever. Because if using
W2K Professional or NT 4.0 Workstation, the OS will only enable
processor IDs 0 and 1 due to OS licensing restriction of only two
CPUs. This means, all of your hard working applications,
multithreading games, etc all use just ONE CPU the entire time. The
2nd physical CPU sits idle.
The other configuration the BIOS can assign processor IDs is even/odd.
Meaning the bios would assign processor IDs 0 and 2 to physical CPU
#1, and it would assign processor IDs 1 and 3 to physical CPU #2.
This is a slightly better configuration for W2K Pro/NT Workstation
machines as now both physical processors are being used. But only up
to a max pipeline of 80% of the hardware max, with half the cache of
the CPU available (I believe Intel specs says cache is split in two
for hyperthreading).
Bottom-line and/or the point to the above paragraphs? If you have W2K
Professional and/or Windows NT 4.0 Workstation on a dual P4 Xeon
machine, Hyperthreading needs to be DISABLED. This will mean each
physical processor acts as one in the OS, allowing for the OS to use
both CPUs as two full CPUs with cache and the full 24 instruction
pipeline.
Please correct me if I am wrong on any of the above. But I believe
that's a statement that needs to be made to all Windows 2000
Professional users out there, that are using dual P4 Xeons.
Ok, that was point #1 I wanted to make/state/ask for corrections. Now
a quick point I want to point out… What if you have a single P4
system? A single P4 or P4 Xeon, doesn't matter, with W2K Pro or NT4?
Do you or don't you enable Hyperthreading? Well, it's not a simple
"on/off" as you might think in NT4. W2K adapts a bit easier when
making the change/testing. With HT disabled, the OS sees only one CPU
and loads a Uniprocessor kernel. Ok, no secret there. But with NT4
(before SP6a), enabling HT will still only show 1 CPU. W2K might
detect the second processor after enabling HT and install the
Multiprocessor kernel. I don't want to get into the reasons, why they
do/don't/etc here. Fyi, if you wanting to change go to Device Manager
in W2K, Computer, and uninstall the Uniprocessor kernel and
IMMEDIATELY install the Multiprocessor kernel. Reboot enable HT, and
you'll be ok. Ok, don't want this thread turning into "how do I
enable… blah blah".
So do you enable HT or not on W2K/NT4 machines? After all, Intel's
technology states HT allows for processing more threads for up to a
30% increase in performance on a single chip. And any multithread
application, Photoshop/Premiere/SQL2K/etc should benefit from HT being
enabled on a SINGLE processor machine. Correct? Ok if that is so,
what do people that don't run server applications do? I.e.,
gaming/web browsing/etc. Do they take a performance hit by not being
multithreading applications (even though IE6 can be debated on that
one, lol)? So you go back to non-HT? Fyi, there are games out there
written for multithreading if you want to enable them. Pretty much
any game written under the Quake III engine (Star Trek Elite Force for
example), and a few others. Most don't though.
So I guess if you do have a multithreading game, or do some heavy PS
work, enable HT on your P4 and be happy. Intel boasts about even
applications that aren't multithread will get a performance increase,
if you running more then 3 or 4 applications at once (i.e., at the
time of me writing this I have Winamp streaming shoutcase, Outlook XP
checking my mail, 7 IE6 windows open, two Instant Messenger
applications, and Photoshop 7.0). This is because even though these
aren't multithreading applications (PS is), that all of these
processes can run on just a little CPU power, and allow me to open
Tribes2 and play it to my hearts content with "smoother gameplay"
because the OS and background applications aren't utilizing all of the
CPU. That has yet to be seen by me, but my system does run smooth
with a single P4 Xeon with HT. Smoother then some "pauses while
thinking" I get with HT turned off and the Uniprocessor kernel loaded.
Ok, a 3rd point to note (I stopped using asterisks didn't? lol).
This is one I am still in the dark a bit about, but can only assume
after reading what Hyperthreading does. "*nix machines get the
greatest boost." That's not a quote from anyone, that's something I
am stating because of the facts. Facts being multithreaded
applications that utilize multiple CPUs get up to a 30% boost as per
Intel, correct? If so, then why not enable HT for and *nix OS (Linux,
FreeBSD (openBSD doesn't support SMP), etc), and recompile to a SMP
kernel. Now EVERYTHING you do, from browsing to playing games, to
just telnet uses both pipes of the P4 in HT mode. And let's think
about a dual CPU workstation running *nix with HT. That's now 4
processors you compile your kernel for, therefore, by statement of
Intel's specs, up to a 30% boost of performance, per physical CPU!
Man that kind of makes me really want to go back to Linux. I'm
thinking of installing a version after I pick up my 2nd physical CPU
and port some C++ code to compile under Linux and compare that to
compiling under Windows XP. I think the results would be surprising.
Ok, now my final point. Which is more of a question really. How is
Windows XP "Hyperthreading Ready"? I've seen posts where people claim
they actually see four (4) CPUs in their performance monitor screen on
a dual P4 Xeon machine. That's impressive! Now, how does XP utilize
these CPUs? XP is still based off of W2K meaning the application has
to be written to take advantage of the multithreading. MSSQL 2000
Desktop Edition I have running on here allows me to choose all
processors. Cool, but I think the Desktop Edition is limited to only
two CPUs (in Microsoft's knowledgebase). Ok what about Photoshop
and/or Premiere? Surely it can use 4 CPUs! Nope, not the Windows
version as stated on Adobe's site (if I remember reading). Now Final
Cut Pro says up to 4 CPUs, so there's one application that states it.
One, out of how many others though?
My point/question being, is HT worth it on dual P4 Xeon systems
running Windows XP Pro (XP Pro being the only Windows ‘workstation' OS
that can detect all four CPUs)? It may be if you have dozens of
applications open at once, which I tend to do from time to time.
To answer my own question, I say yes it is based off of what I have
read from articles and facts. It is worth running HT under Windows XP
Professional, if you are a power user such as myself. It is worth
running for any high-end gaming application, especially if
streaming/having other apps in the background open.
Anyone elses thoughts on the matters at hand? Specifically, the last
one? Like if XP actually does utilize ALL four processor IDs?
Everyone says HT works well in XP. What about dual processors with
HT? Heh, getting a bit on the high-level side of things, are we now?
Enjoy!
Eric A. Duncan
Read up on Intel's press releases, Tom's Hardware information on
Hyperthreading and RAMBUS, and Athlon's anti-hyperthreading hype. Etc
etc.
I only have a simple question. A question that may make a good valid
point that I can't seem to get answered anywhere. Seems to be one or
the other and every time someone gets close to saying the information
I need, they talk about a different configuration. Doh!
I have built two systems for a previous client using the Supermicro
P4DC6+ (dual P4 Xeon 400mhz FSB mobo) with dual P4 Xeons, and
Hyperthreading on (W2K Servers, shows 4 cpus, SQL Server, etc etc).
And I now have one for home that I am trying to optimize to the max,
hence the reason for all of the searching.
Some facts I've ran across:
* Hyperthreading turned ON in the bios, enables the OS to see two CPU
IDs per CPU in the system. If the system hardware has one CPU, the OS
will show two CPUs in task manager. If the system hardware has two
CPUs, the OS will show four CPUs in task manager.
Some people get a little confused with that statement. Here's a
screenshot of one of the dual P4 Xeons I setup. This system is
running only TWO P4 Xeon 1.7Ghz CPUs. Notice, it shows four CPUs.
This is due to Hyperthreading turned ON in the bios.
http://spoof3d.com/projects/microsoft/HT/smooth.gif
* Windows XP (and NT 4.0 Workstation and Windows 2000 Professional)
only supports two (2) CPUs in a multi processor machine.
* Windows XP supports Hyperthreading (have SP1a installed).
Ok the last one has me a bit confused of what exactly it supports, and
the reason for the question and/or point. First the problem with
running Hyperthreading on dual P4 Xeons and on either NT Workstation
or W2K Professional:
Isn't this a problem? Think about it. If the OS only supports two
CPUs and W2K/NT doesn't know any better, you only get two CPUs in task
manager.
Here's even a worse scenario. Intel provided the specs to
manufactures for their BIOS' to control this hyperthreading. There
are two ways the manufacturer can build the bios so to assign
processor IDs to the four virtual CPUs (hyperthreading). The first
being in consecutive order. Meaning it numbers the processor ids as
0, 1, 2, 3. Where 0 and 1 are on physical CPU #1, and IDs 2 and 3 are
on physical CPU #2. This is the worse setup ever. Because if using
W2K Professional or NT 4.0 Workstation, the OS will only enable
processor IDs 0 and 1 due to OS licensing restriction of only two
CPUs. This means, all of your hard working applications,
multithreading games, etc all use just ONE CPU the entire time. The
2nd physical CPU sits idle.
The other configuration the BIOS can assign processor IDs is even/odd.
Meaning the bios would assign processor IDs 0 and 2 to physical CPU
#1, and it would assign processor IDs 1 and 3 to physical CPU #2.
This is a slightly better configuration for W2K Pro/NT Workstation
machines as now both physical processors are being used. But only up
to a max pipeline of 80% of the hardware max, with half the cache of
the CPU available (I believe Intel specs says cache is split in two
for hyperthreading).
Bottom-line and/or the point to the above paragraphs? If you have W2K
Professional and/or Windows NT 4.0 Workstation on a dual P4 Xeon
machine, Hyperthreading needs to be DISABLED. This will mean each
physical processor acts as one in the OS, allowing for the OS to use
both CPUs as two full CPUs with cache and the full 24 instruction
pipeline.
Please correct me if I am wrong on any of the above. But I believe
that's a statement that needs to be made to all Windows 2000
Professional users out there, that are using dual P4 Xeons.
Ok, that was point #1 I wanted to make/state/ask for corrections. Now
a quick point I want to point out… What if you have a single P4
system? A single P4 or P4 Xeon, doesn't matter, with W2K Pro or NT4?
Do you or don't you enable Hyperthreading? Well, it's not a simple
"on/off" as you might think in NT4. W2K adapts a bit easier when
making the change/testing. With HT disabled, the OS sees only one CPU
and loads a Uniprocessor kernel. Ok, no secret there. But with NT4
(before SP6a), enabling HT will still only show 1 CPU. W2K might
detect the second processor after enabling HT and install the
Multiprocessor kernel. I don't want to get into the reasons, why they
do/don't/etc here. Fyi, if you wanting to change go to Device Manager
in W2K, Computer, and uninstall the Uniprocessor kernel and
IMMEDIATELY install the Multiprocessor kernel. Reboot enable HT, and
you'll be ok. Ok, don't want this thread turning into "how do I
enable… blah blah".
So do you enable HT or not on W2K/NT4 machines? After all, Intel's
technology states HT allows for processing more threads for up to a
30% increase in performance on a single chip. And any multithread
application, Photoshop/Premiere/SQL2K/etc should benefit from HT being
enabled on a SINGLE processor machine. Correct? Ok if that is so,
what do people that don't run server applications do? I.e.,
gaming/web browsing/etc. Do they take a performance hit by not being
multithreading applications (even though IE6 can be debated on that
one, lol)? So you go back to non-HT? Fyi, there are games out there
written for multithreading if you want to enable them. Pretty much
any game written under the Quake III engine (Star Trek Elite Force for
example), and a few others. Most don't though.
So I guess if you do have a multithreading game, or do some heavy PS
work, enable HT on your P4 and be happy. Intel boasts about even
applications that aren't multithread will get a performance increase,
if you running more then 3 or 4 applications at once (i.e., at the
time of me writing this I have Winamp streaming shoutcase, Outlook XP
checking my mail, 7 IE6 windows open, two Instant Messenger
applications, and Photoshop 7.0). This is because even though these
aren't multithreading applications (PS is), that all of these
processes can run on just a little CPU power, and allow me to open
Tribes2 and play it to my hearts content with "smoother gameplay"
because the OS and background applications aren't utilizing all of the
CPU. That has yet to be seen by me, but my system does run smooth
with a single P4 Xeon with HT. Smoother then some "pauses while
thinking" I get with HT turned off and the Uniprocessor kernel loaded.
Ok, a 3rd point to note (I stopped using asterisks didn't? lol).
This is one I am still in the dark a bit about, but can only assume
after reading what Hyperthreading does. "*nix machines get the
greatest boost." That's not a quote from anyone, that's something I
am stating because of the facts. Facts being multithreaded
applications that utilize multiple CPUs get up to a 30% boost as per
Intel, correct? If so, then why not enable HT for and *nix OS (Linux,
FreeBSD (openBSD doesn't support SMP), etc), and recompile to a SMP
kernel. Now EVERYTHING you do, from browsing to playing games, to
just telnet uses both pipes of the P4 in HT mode. And let's think
about a dual CPU workstation running *nix with HT. That's now 4
processors you compile your kernel for, therefore, by statement of
Intel's specs, up to a 30% boost of performance, per physical CPU!
Man that kind of makes me really want to go back to Linux. I'm
thinking of installing a version after I pick up my 2nd physical CPU
and port some C++ code to compile under Linux and compare that to
compiling under Windows XP. I think the results would be surprising.
Ok, now my final point. Which is more of a question really. How is
Windows XP "Hyperthreading Ready"? I've seen posts where people claim
they actually see four (4) CPUs in their performance monitor screen on
a dual P4 Xeon machine. That's impressive! Now, how does XP utilize
these CPUs? XP is still based off of W2K meaning the application has
to be written to take advantage of the multithreading. MSSQL 2000
Desktop Edition I have running on here allows me to choose all
processors. Cool, but I think the Desktop Edition is limited to only
two CPUs (in Microsoft's knowledgebase). Ok what about Photoshop
and/or Premiere? Surely it can use 4 CPUs! Nope, not the Windows
version as stated on Adobe's site (if I remember reading). Now Final
Cut Pro says up to 4 CPUs, so there's one application that states it.
One, out of how many others though?
My point/question being, is HT worth it on dual P4 Xeon systems
running Windows XP Pro (XP Pro being the only Windows ‘workstation' OS
that can detect all four CPUs)? It may be if you have dozens of
applications open at once, which I tend to do from time to time.
To answer my own question, I say yes it is based off of what I have
read from articles and facts. It is worth running HT under Windows XP
Professional, if you are a power user such as myself. It is worth
running for any high-end gaming application, especially if
streaming/having other apps in the background open.
Anyone elses thoughts on the matters at hand? Specifically, the last
one? Like if XP actually does utilize ALL four processor IDs?
Everyone says HT works well in XP. What about dual processors with
HT? Heh, getting a bit on the high-level side of things, are we now?
Enjoy!
Eric A. Duncan