Re: Hyperthreading - Oracle license

From: Kevin Closson <ora_kclosson_at_yahoo.com>
Date: Mon, 14 Jan 2013 10:04:17 -0800 (PST)
Message-ID: <1358186657.34441.YahooMailNeo_at_web162804.mail.bf1.yahoo.com>



If this LIO capacity analysis was not done with SLOB you probably piled up on concurrency more than needed...was it SLOB? Either way don't let any exaggeration-prob nincompoop tell you that threaded cores enjoy a 100% boost. Threads sharing a core only run when the other is stalled. The blend of stalls (uniformity is best) dictates the dividends paid.  A severly non-uniform blend of stalls results in, um, wretched pain due to starvation.

 From: Karl Arao <karlarao_at_gmail.com> To: "oracle-l_at_freelists.org" <oracle-l_at_freelists.org> Cc: "rjoralist2_at_society.servebeer.com" <rjoralist2_at_society.servebeer.com>; ora_kclosson_at_yahoo.com Sent: Monday, January 14, 2013 3:51 AM
Subject: Re: Hyperthreading - Oracle license  

I've done a couple of CPU test cases lately which shows the CPU behavior as you saturate up to the max # of CPUs/threads and also showing the effects of having HT and TurboBoost on or off. The tests were done on my desktopserver, Exadata V2, and X2 and it's a CPU centric (LIOs) workload and as the server gets saturated up to max CPU then there's diminishing returns on LIOs. You can check out the test cases here http://goo.gl/1MLFf <http://goo.gl/1MLFf> With Hyperthreading turned on once it gets past the core count from my tests you only get about 20% increase up to the max # of threads. So it's really not doubling the CPU LIO capacity by any means but I would always leave it enabled.

check the workload level number range on the images where the 20% increase on LIOs/sec is occurring

desktop server   1.2M to 1.4M LIOs/sec (CPU 4 to 8)
x2                     3.1M to 3.6M LIOs/sec (CPU 13 to 25)
v2                    1.8M to 2.1M LIOs/sec (CPU 9 to 17)

and you'll start to see some "CPU wait" (saturation point) when you reach about 87.5% of the number of threads or at the max number of threads. So in Exadata X2 (24CPUs), that's when you are using 21-24CPUs where you will start seeing gradual "CPU wait" on your response times.

I agree with Kevin when he said that 70% is the new 100%, and there's nothing wrong if you max out the 24 CPUs whenever you do instance caging as long as you know the behavior or what will the effect be once all 24 CPUs are used (remember the 87.5% saturation point).

And I also have a couple of observations from my test cases:

On turbo boost
* notice that it only helps when you are just using 1 or 2 CPUs (either
HTon or HToff), so the overclocking effect does not really matter when you get all or most of the CPUs working even if turbostat (not shown on the graph) shows that it is still doing the increase in clock rate

On Hyperthreading
* On HToff-TurboOn look at the 320K range LIOs on CPU#1 which is higher
than HTon-TurboOn, it may seem
faster being on this config but this is what I mean by Hyperthreading in a way helping on scalability.. look at the effect on "CPU wait" (time spent on run queue) as it starts to manifest on the response time of the SQLs when it reach the max CPUs of 4 (HToff) while if you have the HTon it starts at CPU 8. So you are experiencing the queueing earlier and on the OS side with HToff the 2 CPU usage will immediately tell 50% OS CPU utilization and 4 CPU as 100%.
But with HTon (CPU 8) even if your are not getting linear LIO performance once you get past the number of cores, completely avoiding "CPU wait" until the max # of threads is still a good thing in terms of performance.

-- 
Karl Arao
karlarao.wordpress.com
karlarao.tiddlyspot.com
twitter.com/karlarao


--
http://www.freelists.org/webpage/oracle-l
--
http://www.freelists.org/webpage/oracle-l
Received on Mon Jan 14 2013 - 19:04:17 CET

Original text of this message