Tip #5: Graphing performance data from Netapp – IN 3D!


(Note, if you see &gt; or &lt; replace them with < and > respectively.  WordPress messes them up)

Well, I am sitting in a NetApp Cluster Mode 8.1.x, and looking through the performance section.  And we had some discussions.  I figured it was time to share some of the information I have posted before with graphing with powershell and also more advanced…

In the past, I had used 3D modeling in the Stats package R, to do 3D modeling of the CPU on a san.

Here is a video of what I am talking about:

This was the customer referenced in 2 previous posts, where their DFM and alerting software was using the incorrect counters, and saying their CPU usage was 85-90% CPU utilization.

The moment you stop being a lame, and start loving a stats package like R, your life will because supercalifrigginlishious!  R basically kicked matlabs ass, and its freaking free!

What you will need:

  • R Statistical package
  • R-Studio (the best freaking gui for R there is)
  • Hexbin library for R (installed from cran mirrors)
  • RGL library for R (installed from cran mirrors)

Depending on your operating system, the requirements for Hexbin and RGL may need other software packages.  Possibly OpenGL, possibly other stuff

In R or R-Studio, this is how you install the packages:

Reference my other post on “Graphing Performance Data from NetApp”.  You need to gather time and CPU data from DFM/OnCommand Core.  This is how you dump out data:

So, we get some data that looks like this:


The problem with this is the dashed lines, and also the characters in the header “netapp1:avg_processor_busy”.

Edit the text file to look like this:

Now, we go back to R-Studio, and load up the libraries we installed:

Great!  Now the fun begins.

I have a textfile from DFM of stats (in this case 3 months worth with every 10 minutes with a 1 minute rolling max avg cpu)

Load it up!

So what does this mean? Well…

  • “netappvf01 <- read” means take the file we are referencing and read it (tab from DFM, but read as whitespace) delimited into the variable netappvf01
  • View() shows you a table of the data
  • attach(variablename) means that we take the variable above and make that the workset of data that we will be using.
  • plot(column1, column2, title) does a simple scatter plot of the data to test that the data is good:

This is not very pretty or useful.  We can’t carve it up.  Thats why we want to goto 3D!

Because I’m insanely anal… I actually want to use my hourly data as datapoints as well!  I am going to go through my text file,and actually turn it into a 3 column data. Edit the file and just add another column in.

I like to use this data as a new variable… netappdr01.3col

The big change here is we are making a new variable p, and forcing it into a timestamp from the other column data.




By looking at the data in a 3d representation, we were able to see that their backup application and SnapMirror schedules conflicting was the root cause of a CPU spike on the SAN, but within acceptable limits.



Be Sociable, Share!

, , ,