Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Mailing Lists -> Oracle-L -> Re: Dual core sun boxes
Paul Drake wrote:
>O
>
>Mark,
>
>That is the difference between full cores and "HypeThreading".
>As far as we've been informed, on IA32 the hypterthreaded processor
>does not count for licensing. It took more than a year to get that
>guideline out of Oracle ... so we had disabled hyperthreading by
>default on new servers. If the server only had one physical CPU, that
>meant patching the HAL when enabling the hypertheading functionality.
>One must choose wisely when selecting the proper HAL ... lest the OS
>be cast into the land of BSOD where only the disk of re-installation
>can revive it.
>
>Mladen, please take it from here.
>
>
>
The difference between "hyperthreading" and a dual core is L1
("on-board") cache. Dual core has two, separately addressable caches
while "hyperthreaded" CPU has only a single L1 cache. That means that
any JMP out of cache will clear L1 for both CPU's
thus cancelling any logic that a smart optimizing compiler may have put
in the program that is executing. Namely, you cannot
predict when will the other "CPU" clean and refill the cache. Why is
cache so critical? Modern CPU goes to bus (interconnect, motherboard)
approximately billion times per second (1GHZ with time splitters).
Usual memory chips (SDRAM) can respond
in 30ns, which means that it's 30 times slower then the CPU. Just when
you think that things cannot get any worse, they do.
With virtual memory being an essential part of any modern OS, you need
minimally 2 memory addresses to fetch a content
of a single address into CPU: you need the address of a page table and
the address of the page itself. It means that you need
at least two accesses to RAM. i.e. 60ns. So, your memory is 60 times
slower then your CPU. How do you speed it up?
You guessed it: you implement a cache. Intel's on-board cache size is
usually 256k. Unless your two virtual CPU's are working
on the same thing (vectorized FP operations for graphics, like ray
tracers) they'll undermine each other by cleaning cache
approximately twice as fast as a single CPU. An optimizing compiler from
Intel can buy you much more performance gain
then hyperthreading. That is why oracle doesn't charge for it: it
doesn't do anything for you. With two L1 caches situation
is drastically different. You effectively have two CPU's. That'll cost
you.
-- Mladen Gogala Oracle DBA Ext. 121 -- http://www.freelists.org/webpage/oracle-lReceived on Tue Apr 12 2005 - 12:44:37 CDT
![]() |
![]() |