How to measure IOPS?

Hi

I have a system running

solaris 10

, and I intend to use a NetApp as its storage system. The application requires a throughput between the server and the storage 7000 disk IOPS (random IO sustained throughput with response time of 20 mili second and 16k block size).
How to make sure that I can achieve those figures?

Without knowing your actual set up, any answer is just a guess.

You can measure throughput with iostat -zxm 10 10 Adjust the numbers as you like. How to flood I/O? depends in part on your setup. You might be able to use mkfile , I dunno.

I am using a SPARC T3-1B blade server and the NetApp FAS 3040 storage.
From the output of

iostat -zxm 10 10

, what I needed to be doing?

You need to flood existing I/O channels. If you have nothing but hard disks, you will have to check the specifications of your set up at oracle.com Look for T3-1B tech spec sheet. If you do not know how to do this contact your vendor - they will tell you. How will you connect to the NetApp appliance? fiber? infinband? That dictates throughput.

I suspect you do not have a problem - check first. I also hope you did not order the NAS hardware - sounds like it was thrown at you.

Have you bought the storage yet? If so, what are the physical disks?

Because 7,000 IO ops/sec w/ a 20 ms response time is not an easy goal easy to meet.

And how is that 20 ms defined? Average response time or max response time?

---------- Post updated at 03:33 PM ---------- Previous update was at 03:24 PM ----------

Except that there are so many ways for someone not familiar with doing high-performance IO to ruin performance.

Such as "Let's set up a 27-disk RAID-6 array with a 1 MB block size per disk! Because bigger is faster!"

Then the array gets partitioned out into 34 different LUNs, so that every server in the data center has its IO contending with every other server in the data center over the same physical disks. And then wonder why the critical app they're running - that does IO via 17 layers of C++ iostreams and winds up doing 4 kb random writes all over the place because some developer whose only tool is to write more and more code reinvented the concept of a "database" but has no clue how to do it competently - is slow.

(And 4 years later only one server is left using a single LUN on that array because everyone bailed on it because performance stunk on the expensive hardware that was supposed to fix all their storage issues, but no one can figure out a good way to migrate that last server off it - and hey, it seems to be working just fine now...)

The 7,000 IO ops/sec w/ a 20 ms response time its a spec coming from the application vendor documentation, the oracle setup I was told is ASM disks (one volume).
My suspicion comes from the fact, that when using the application (web based) it takes some time to display data, when entering the application, after login in, so its slow.

Are you looking for a way to drive IO operations on the applicable LUN(s) outside of using dd like this?

dd if=... of=/dev/null

Even if you do

dd if=/dev/rdsk/c6.... of=/dev/null bs=64k

that won't give you an accurate picture of random IO operations because dd reads sequentially, thus giving an inflated view of the number of IO ops the LUN can support.