pywbem for performance stats from multiple Symmetrix arrays

332 views
Skip to first unread message

Eric Lewis

unread,
Feb 13, 2014, 4:15:41 PM2/13/14
to smi-s-devel...@googlegroups.com
Howdy!

I've been attempting to collect the performance statistics from a few VMAX arrays.  The setup high level is one or more VMAX arrays with an external SYMCLI/SMI-S box.  I'm using python as the programing language and pymbem as the library to connect to SMI-S.

the code:

cliconn = pywbem.WBEMConnection('https://smisprovider', ('admin', '#1Password'),"root/emc",)
instnames = cliconn.EnumerateInstanceNames('EMC_BlockStorageStatisticalData')
for inames in instnames:
    inst = cliconn.GetInstance(inames)
    instanceDict = dict(inst)
    ...
    ...

Going though each of the instnames takes much much too long (about 15 minutes) and I need to gather the stats, calculate them, and write them to a database every 10 minutes.  It's pretty quick to get the whole instance, just not so much going though the parts.

I'm looking for a few things.

How would I get the data for a specific array on any give provider.
What's the most efficient way to get the perf data and broken out for all the reported components

I've done a bit of research and found a few answers in this group to get to this point.

Thanks!

richard roscoe

unread,
Feb 15, 2014, 5:14:36 PM2/15/14
to smi-s-devel...@googlegroups.com
Hi Eric,

The SMI Specification offers several different ways to obtain performance data from very fine grain control or in bulk which is what you appear to want if I have read your post correctly.
the method you describe below is the most chatty way that you can get the data and would explain why it's taking so long for you to complete your task.

Here is the first option that meets all your needs i believe:

Issue a EnumerateInstanceNames call for the class CIM_StatisticsCollection,  you will get back one instance for each array known to the provider.

Built with EMC SMI-S Provider: V4.6.2
Namespace: root/emc
repeat count: 1
(localhost:5988) ? ein
Class:  CIM_StatisticsCollection
++++ Testing EnumerationInstanceNames: CIM_StatisticsCollection ++++
Instance 0:
Symm_QueryStatisticsCollection.InstanceID="SYMMETRIX+000195600142"
Instance 1:
Symm_QueryStatisticsCollection.InstanceID="SYMMETRIX+000198700061"


for each of these instances you can then issue a GetInstance call and it will return the stats data for each instance that supports stats for that array in a very compact and easily parsed format.
Only the  stats for the array will be returned.

this property tells you the time the sample was taken:
<PROPERTY NAME="TimeLastSampled"  TYPE="datetime">
<VALUE>20140215170007.543000-300</VALUE>
</PROPERTY>
</INSTANCE>

this property tells you the sample interval.

PROPERTY NAME="SampleInterval"  TYPE="datetime">
<VALUE>00000000001500.000000:000</VALUE>

You can use a propertylist on the getinstance call to return just the TimeLastSampledProperty,  when this value changes compared to the last time you got the data you know you have a new set of data you can return.
 By doing it this way you do not waste time and server side resources pulling back the data over and over again that  has not changed since the last time you obtained it.

Personally I prefer the GetStatisticsCollectionMethod as you can tailor the stats that you want returned or use the default manifest to return the data.

Finally I encourage/urge you to join the SNIA SMILAB programs as it's the most reliable way to get the info you need. 
 You also have the opportunity to meet and talk with an extremely knowledgeable and cooperative group of storage engineers from the storage companies that have implemented smi-s compliant providers during the snia smilab plugfests.

/Rich

NarsimhaReddy Challa

unread,
Feb 16, 2014, 2:21:06 AM2/16/14
to smi-s-devel...@googlegroups.com
Hi,

Instead of directly enumerating the instances (which gives so many instances and some are not relevant), I would suggest you to go through start with Server Profile (probably, it may be implemented in the interop namespace)

CIM_RegisteredProfile  (Array) -> CIM_ElementConformsToProfile -> CIM_ManagedElement 

Now, you can identify the exact instance of Disk Array Subsystem using the properties of the resultant class instances CIM_ManagedElement  (above),

From the EMC array instance, traverse the appropriate associations to get the instance of EMC_BlockStorageStatisticalData

Probably, in your model the following associations may work...

    CIM_ManagedElement      ->    CIM_ElementStatisticalData     -> EMC_BlockStorageStatisticalData

Thanks & Best Regards
Narsimha




--
You received this message because you are subscribed to the Google Groups "SMI-S Developers Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to smi-s-developers-...@googlegroups.com.
To post to this group, send email to smi-s-devel...@googlegroups.com.
Visit this group at http://groups.google.com/group/smi-s-developers-group.
For more options, visit https://groups.google.com/groups/opt_out.

Eric Lewis

unread,
Feb 17, 2014, 4:02:45 PM2/17/14
to smi-s-devel...@googlegroups.com
Beautiful.  I was able to gather the stats very quickly using this method.  Now I just need to tweak the manifest to include a few counters needed to calculate other stats.  I'm waiting on an EMC SR to find out what stats and the calculations needed along with changing the default from 15 min to 10 min.

-Eric

Praveen Kumar

unread,
Feb 17, 2014, 11:39:23 PM2/17/14
to smi-s-devel...@googlegroups.com
Hi Eric,

You can change the default Statistics Collection from 15mins to 10mins using the CIM_StatisticsCollection class. The CIM_StatisticsCollection.SampleInterval property determines the Statistics polling interval. You can modify the CIM_StatisticsCollection.SampleInterval to 00000000001000.000000:000 using ModifyInstance or SetProperty method.

Reducing the SampleInterval time puts load on the Provider, as Statistics Needs to be collected more frequently. EMC recommendation is to collect the statistics every 15mins.

Regards
Praveen
Reply all
Reply to author
Forward
0 new messages