Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I have a server with an Intel Core i7 processor (4 cores). If I view processor activity in Task Manager I see that there are 8 cores. I believe that this is because of hyperthreading (please correct me if I'm wrong).

SQL Server 2008 R2 Standard will use a maximum of 4 CPUs when compared to SQL Server Enterprise which uses a maximum of 8 CPUs.

My question: Will the standard version of SQL Server fully utilize all available CPUs on this server? i.e. Will it see 4 or 8 CPUs?

share|improve this question
add comment

2 Answers

up vote 4 down vote accepted

The limit in SQL Server 2008 Standard for processors is per socket, not per core. For more info, check out the SQL Server 2008 page at Microsoft.com. Specifically, the "SQL Server 2008 R2 Editions Overview" PDF document. From the document:

With increasing hardware innovations, Microsoft continues to be the only major database vendor who does not price per core for multi-core processors

Yes, SQL Server 2008 Standard will use all 8 cores. It could use a hundred cores on a single-socket license if such a CPU existed.

share|improve this answer
2  
Please note though that this does not apply to SQL Server 2012, as it has switched to a per-core licensing model. Although 1 socket == 4 cores when you upgrade, so in this case it's about the same (just disable hyperthreading). –  Mark Henderson Feb 29 '12 at 5:23
1  
Yes, 2012 includes value added licensing suck. –  Wesley Feb 29 '12 at 6:23
    
Great answer - thank you! –  Guy Mar 1 '12 at 3:45
add comment

It doesn't matter. If load is placed on only four cores, the scheduler is smart enough to make sure that the load is on one logical core for each physical core. And hyper-threading typically gives you at best an additional 15% of performance. Loading a virtual core robs the other virtual core that shares that physical core of resources such as execution units, I/O bandwidth, L2 cache space, and so on. So they don't run at anywhere near full speed.

So even in the worst imaginable case, it would mean about 15% of your CPU couldn't be used by SQL server itself. But when SQL server is doing things, so will the OS be -- handling network and disk interrupts, managing memory, and so on. In any realistic case, that will be around 20% of the CPU load, and that can use the other virtual cores. So you're fighting over essentially nothing.

share|improve this answer
    
Thanks for the additional info - appreciated! +1 –  Guy Mar 1 '12 at 3:46
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.