Thursday, February 28, 2008

MIMIC FAQ: What is the fastest SNMP simulation I can run? Why is it not the default?

Q. What is the fastest SNMP simulation I can run? Why is it not the default?

A. By default, MIMIC runs the most useful basic simulation clause for a wide variety of applications: a close snapshot of a device SNMP agent, with static objects taking on the values that were observed, and Counter objects taking on a rate that was interpolated from observed values, both entirely configurable at run-time. For details, see the QuickStart tutorial.

This default basic simulation is more expensive than faster, simpler simulations. The simplest simulation is to just return a constant value for all object instances. If the management application does not care about values retrieved, then you can use this simulation.

The sample simulation clauses that were compared in a performance experiment were (for more details, see the SIMULATE clause section in the Compiler Guide):

* SIMULATE{ constant(1) }
* SIMULATE{ uniform(1) }
* SIMULATE{ constant_per_tu(1, 60) }
* SIMULATE{ uniform_per_tu(1, 60) }
* SIMULATE{ constant(lookup("r")) }
* SIMULATE{ uniform(lookup("r")) }
* SIMULATE{ constant_per_tu(lookup("r"), lookup("tu")) }
* SIMULATE{ uniform_per_tu(lookup("r"), lookup("tu")) }
* SIMULATE{ uniform_per_tu ( (lookup ("r") == 0 ? 1 : lookup ("r")), lookup ("tu")) }

Here is a chart comparing the performance of different simulation clauses for objects. When requests are performed with only one variable per PDU, the difference in performance between the fastest and default simulations is approximately 50%. But, the more variables that are packed into a PDU, the larger the computation part becomes (compared to network overhead, etc), and for 100 variables per PDU, the difference between the fastest and default simulations is a factor of more than 5.

No comments: