Hyper-Threading Technology
You just pay for the physical cpus. Beyond that SQL Server 2000 does work
with HT, however it doesn't do anything really special for HT. So in some
instances you may get less than ideal performance.
The issue for SQL Server 2000 on HT, if there is one, is that SQL Server's
internal schedulers are tied to processors (which in this case should be
thought of as logical processors). Once work is assigned to a scheduler it
stays with that scheduler and thus that processor. So it would be possible
for two long running pieces of work to be assigned to the two logical
processors on the same physical processor and compete for that single
physical processor, even though another physical processor is less busy. A
similar situation can even happen without HT, but in that case at least the
two processors are equal in capability (that is you are getting 2X the
performance of a single processor). In the HT case you are getting more
less than 1.5X the performance of a single processor, so the impact is
exaggerated. For short-running transactions, as in an OLTP system, this
shouldn't be an issue. For systems with long running complex queries it
might be.
I actually wouldn't try to restrict SQL Server to the logical processors on
a subset of physical processors. What I would do is either (a) don't
restrict it at all (for most cases) or (b) restrict it to the first logical
processor of each physical processor. In the latter case this causes SQL
Server to only have one scheduler per physical processor and avoid
pathologically bad cases. And it leaves the second logical processor on
each physical processor free to run background tasks and other work assigned
to the server. On a 2 (physical) processor system with HT this means you
would restrict SQL Server to use CPUs 0 and 1.
--
Hal Berenson, SQL Server MVP
True Mountain Group LLC
|