SLOB Is Not An Unrealistic Platform Performance Measurement Tool – Part I. Let’s See If That Matters…To Anyone.

I just checked to find out that there has been 3,000 downloads of SLOB – The Silly Little Benchmark. People seem to be putting it to good use. That’s good.

Before I get very far in this post I’d like to take us back in time–back before the smashing popularity of the Orion I/O testing tool.

When Orion first appeared on the scene there was a general reluctance to adopt it. I suspect some of the reluctance stemmed from the fact that folks had built up their reliance on other tools like bonnie, LMbench, vxbench and other such generic I/O generators. Back in the 2006 (or so) time frame I routinely pointed out that no tool other than Orion used the VOS layer Oracle I/O routines and libraries. It’s important to test as much of the real thing as possible.

Who wants to rely on an unrealistic platform performance measurement tool after all?

My “List”
Over time I built a list of reasons I could no longer accept Orion as sufficient for platform I/O testing. Please note, I just wrote “platform I/O testing” not “I/O subsystem testing.”  I think the rest of this post will make the distinction between these two quoted phrases quite clear. The following is a short version of the list:

  • Orion does not simulate Oracle processing in any way, shape or form. More on that as this blog series matures.
  • Orion is what I refer to as mindless I/O. More on that as this blog series matures.
  • Orion is useless in assessing a platform’s capability to handle modify-intensive DML (thus REDO processing, LGWR and DBWR, etc). More on that as this blog series matures.

My present-tense views on Orion sometimes surface on twitter where I am occasionally met with vigorous disagreement–most notably from my friend Alex Gorbachev. Alex is a friend, co-member of the Oaktable Network, CTO of Pythian (I love those Pythian folks), and someone who generally disagrees with most everything I say.

I respect Alex, because he has vast knowledge and valuable skills. His arguments make me think. That’s a good thing. I’m not sure, however, our respective spheres of expertise overlap.

So how do these disagreements regarding SLOB get started? Recently I tweeted:

The difference between SLOB and Orion is akin to Elliptical trainer versus skiing on the side of a mountain.

Alex replied with:

I could just as well argue that SLOB is useless because that’s not real workload anyway and you should test with your app

This quick exchange of ideas set into motion some Pythian testing by Yury. As it turns out I think the goal of that test was to prove parity between SLOB and Orion for random reads–and perhaps not much more.  If only I have published “My List” above before then.

Yury’s tests were good, albeit, exceedingly small in scope. His blog post suggests more testing on the way. That is good. If you read the comment thread on his blog entry you’ll see where I thank Yury for a good tweak to the SLOB kit that eliminates the db file parallel reads associated with the index range scans incurred by SLOB reader processes. Come to think of it though, Matt from Violin Memory pointed that one out to me some time back. Hmm, oh well, I digress. The modifications Yury detailed (init.ora parameters) will be included in the next drop of the SLOB kit. Again, thanks Yury for the testing and the init.ora parameter change recommendations!

Feel free to see Yury’s findings. They are simple: SLOB and Orion do the same thing. Really, SLOB and Orion do the same thing? Well, that may be the case so long as a) you compare SLOB to Orion only for simple random read testing and/or b) your testing is limited to a little, itsy-bitsy, teeny, tiny, teensy, minute, miniscule, meager, puny, Lilliputian-grade undersized I/O subsystem incapable of producing reasonable, modern-scale IOPS.  Yury’s experiment topped out at roughly 4,500 random read IOPS.  I’ll try to convince you that there is more to it than that (hint, modern servers are fit for IOPS in the 20,000/core range). But first, I have two quotable quotes to offer at this point:

When assessing the validity of an I/O testing tool, do so on a system that isn’t badly bottlenecked on storage.

If your application (e.g., Oracle Database)  is “mindless” use a “mindless” I/O generator–if not, don’t.

Mindless I/O
So what do I mean when I say “mindless I/O?”  The answer to that is simple. If the code performs an I/O into a memory buffer, without any application concurrency overhead, and no processes even so much as peeks at a single byte of that buffer populated through DMA from the I/O adapter device driver–it’s mindless. That is exactly how Orion does what it does. That’s what every other synthetic I/O generator I know of does as well.

So what does mindless I/O look like and why does it show up on my personal radar as a problem? Let’s take a look–but first let me just say one thing–I analyze I/O characteristics on extremely I/O capable platforms. Extremely capable.

The following screen shot shows a dd(1) command performing mindless I/O by copying an Oracle OMF datafile from an XFS file system to /dev/null using direct I/O. After that another dd(1) was used to show the difference between “mindless” and meaningful I/O. The second dd(1) was meaningful because after each 1 MB read the buffer is scanned looking for lower case ASCII chars to convert to their upper-case counterpart. That is, the second dd(1) did data processing–not just a mindless tickling of the I/O subsystem.

The mindless I/O was 2.5 GB/s but the meaningful case fell to about 1/6th that at 399 MB/s. See, CPU matters. It matters in I/O testing. CPU throttles I/O–unless you are interested in mindless I/O. What does this have to do with Orion and SLOB? A moment ago I mentioned that I test very formidable I/O subsystems commensurate with modern platforms–so hold on to your hat while I tie these trains of thought together.

Building on my dd(1) example of mindless I/O, I’ll offer the following screen shot which shows Orion accessing the same OMF SLOB datafile (also via direct I/O validated with strace). Notice how I force all the threads of Orion (it’s threaded with libpthreads) to OS CPU 0 using numactl(8) on this 2s12c24t Xeon 5600 server?  What you are about to see is the single-core capacity of Orion to perform “mindless I/O”:

Unrealistic Platform Performance Measurement Tools
This is only Part I in this series.  I’ll be going through a lot of proof points to solidify backing for my Orion-related assertions in the list above, but please humor me for a moment. I’d like to know just how realistic are platform performance measurements from an I/O tool that demonstrates capacity for 144,339 physical 8K random IOPS while pinned to a single core of a Xeon 5600 processor?

We are interested in database platform IOPS capacity, right?

Through this blog series I aim to help you conclude that any tool demonstrating such an unrealistic platform performance measurement is, well, an unrealistic platform performance measurement tool.

Do you feel comfortable relying on an unrealistic platform performance measurement tool? Before I crafted SLOB I too accepted test results from unrealistic platform performance measurement tools but I learned that I needed to include the rest of the platform (e.g., CPU, bus, etc) when I’m studying platform performance so I left behind unrealistic platform performance measurement tools.

Until recently I didn’t spend any time discussing measurements taken from unrealistic platform performance measurement tools. However, since friends and others in social media are pitting unrealistic platform performance measurement tools against SLOB (not an unrealistic platform performance measurement tool) such comparisons are blog-worthy. Hence, I’ll trudge forward blogging about how unrealistic certain unrealistic platform performance measurement tools are. And, if you stay with me on the series, you might discover some things you don’t know because, perhaps, you’ve been relying on unrealistic platform performance measurement tools.

As this series evolves, I’ll be sharing several similar unrealistic platform performance measurement tool results as I go though the list above. That is, of course, what motivated me to leave behind unrealistic platform performance measurement tools.

Final Words For This Installment
In Yury’s post he quoted me as having said:

It’s VERY easy to get huge Orion nums

His assessment of that quote was, “kind of FALSE on this occasion.”  Having now shown what I mean by “VERY easy” (e.g., even a single core can drive massive Orion IOPS) and “huge Orion” numbers  (e.g., 144K IOPS), I wonder whether Yury will be convinced about my assertions regarding unrealistic platform performance measurement tools? If not yet, perhaps he, and other readers will eventually. After all, this is only Part I. If not, Yury, I still want to say, “thanks for testing with SLOB and please keep the feedback coming.”

Alex and I may always disagree :-)

Oh, by the way folks, if all you have is Orion, use it. It is better than wild guesses–at least a little better.


Filed under: oracle

Easy text/html multipart emails with Email::Simple::Markdown

These days, to craft basic emails, I go with Email::Simple. For the more heavy stuff with attachements and what-nots, I reach out for Email::MIME. Together, they make a pretty awesome duo. But… (come on, admit it, you knew there was going to be a ‘but’) But there is a fairly common use-case that falls pretty [...]

Pythian and NoCOUG Announce: The Third International SQL Challenge

For the third consecutive year, NoCOUG is hosting an international SQL challenge. Last year we ran into a small difficulty where the international DBA community proved too clever and solved the challenge before we could properly publicize it. A good DBA learns from her mistakes, and this year we are pre-announcing the challenge: The challenge [...]

Oracle VM Manager: OVMAPI_6000E Internal Error: Connection refused

This is just a quick post to share my first 3.1.1 Oracle VM Manager (OVMM) troubleshooting experience. After the initial installation I rebooted the server, tried to access OVMM https://ovmmhost:7002/ovm/console and received the following error in a browser screen: Unexpected error during login (com.oracle.ovm.mgr.api.exception.FailedOperationException: OVMAPI_6000E Internal Error: Connection refused Connection refused[[ < date > ), please consult logs [...]

Installing Oracle VM Manager 3.1.1 under Dom0 host, or How to save resources on your sandbox

It happens to be very short blog post as installation the Oracle VM Manager 3.1.1 under Dom0 host isn’t different from installing the previous version. For all tricks that you need to use please see my Oracle VM Manager 3.0.3 under Dom0 post. Just to make this post to look like a proper blog post :) I am sharing the [...]

Upgrade Exadata to 11.2.0.3

During last couple of month I was seeing some discussion and question in different online conferences and user groups about upgrade RAC and exadata to 11.2.0.3. The questions were mostly about upgrade procedure, timing, what can happen during the upgrade and how a system behaves after upgrade. I’ve recently upgrade couple of exadata to 11.2.0.3 and want [...]

Infernal…

Infernal is the ninth book in the Repairman Jack series by F. Paul Wilson.

Another family tragedy has the effect of reuniting Jack with his brother Tom, the judge. It turns out Tom is not as squeaky clean has he appears and needs Jack’s help for something less than legal. As you can probably guess by now, it all turns sinister and mystical… :)

I’ve definitely become desensitized to the darkness now. Every time a new character is introduced, pretty much my first thought is, “I wonder how they will die?” It’s a bit like watching Star Trek and knowing the security officer (in the red top) you’ve never seen before is the one that’s going to eat lead/laser…

Cheers

Tim…


Infernal… was first posted on May 16, 2012 at 9:02 am.
©2012 "The ORACLE-BASE Blog". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement.


Finally, a Good Starting Point for Why Software is Hard

After a hectic month or so, I’m finally getting around to reading.

I’ve been meaning to share this thoughtful piece from Scott Porad, CTO of Cheezburger (squee!), that does an excellent job encapsulating some reasons why software is so difficult.

His main points, or rather, those made by his friend are:

1. Software is entirely hand-made, and compounding this, software is distributed at very large scale. Looking back through history, machine-made goods have always replaced hand-made goods to account for large scale distribution. Software isn’t there, yet.

2. Software production lacks standards. Think about software projects, and you’ll find a variety of methods, e.g. waterfall, agile. However, even within an established method for running a software project, there is variance from team to team, even within the same company.

3. Everyone has an opinion on how long a project should take, an anomaly for producing goods that require high levels of experience and skill from the people doing the work. Project estimation is hard.

Scott’s second point about standards is similar to one that nags me, titles. Software uses titles like engineer and architect, but these jobs don’t require the same levels of certification and training that their namesakes do.

So, while it makes sense to use titles that mirror physical construction, this isn’t really a fair comparison.

I’ve noodled the reasons behind why software is both difficult and misunderstood for years, and this is the best encapsulation I’ve read to date. Even so, I’d add a few other points.

4. Everyone uses software, at home, at work, on the go, and software usually requires substantial learning investment. This tends to make everyone feel like an expert, and it tends to trivialize the effort required to produce this or that small tweak.

This is a scaling problem for  producers of software, e.g. every time Facebook makes a chance, revolt ensues. It’s exceptionally difficult to make changes to software because of the investment in relearning. Plus, software is highly emotional to the end user, making the effect of changes impossible to estimate.

5. Software relies on hardware, which is an older, more mature production model. Therefore, hardware tends to advance more quickly than software can keep up, and replacements cannot be assumed. So, when software is produced, it must account for old hardware and new hardware, which compounds the all other problems.

I’m sure there are other points too. This is a good starting point, and I’m interested to know your thoughts, given that most of you are close to the problem.

Find the comments.Possibly Related Posts:

UKOUG 2012…

The call for papers for the UKOUG 2012 conference ends in less than three short weeks!  If you were planning on going to the conference (and even if not) - you should consider submitting a paper.

I've been a long time supporter of all of the user groups and their conferences and I can attest to the quality of the UKOUG event.  The conference is chock full of technical talks with hundreds of sessions to choose from.  There is something for everyone there.

If you've never presented before, don't let that deter you from submitting a paper.  No one knows the anxiety that public speaking can bring better than I - I've written about it before. You'll find the conference to be an entirely different experience on the other side of the podium.  In addition to the experience of presenting, the networking and exposure that comes with being a speaker won't hurt you at all.  Whether you are a DBA or developer - having good public speaking skills is a necessity today - and using the conference as a way to build those skills is a great way to start.

Additionally - what you have to say is important and relevant to the user community as a whole.  A good conference needs a lot of speakers, from many diverse disciplines, with diverse backgrounds - the more speakers the merrier.  Don't think you don't have anything to offer - everyone does.  And don't feel that your topic wouldn't be interesting to someone else - it will be.  There are a lot of people out there trying to do some of the same things you've done and they'd love to hear how you did it.

That is one of the things about user groups I really like - they bring together a lot of people doing similar things - but in a different way.  You'll learn something new - and they will too.  

The UKOUG is one of the larger and well run conferences out there - don't be afraid to talk.  Challenge yourself to get up there and just do it.  You won't be sorry (ok, maybe in the minutes leading up to it you will be - but you'll get over that :) ) 

Hope to see you there - and don't chicken out!

Oracle Database Appliance as a Consolidation Platform

I had a chance to talk to several Oracle Database Appliance users at the annual Collaborate 2012 conference last month in Las Vegas. And a common theme in this discussions, as well as discussions with Pythian clients, is an interest in using the ODA as a large-scale consolidation platform. ODA offers all the benefits of [...]