SNMP Informant Knowledge-base

Article: 2005-007
Last Updated: 16Jan2006
Product: SNMP Informant - Advanced Version, Application Plus Packs, WMI versions, Standard Version
Subject: Configuring registry settings to control SNMP Informant performance

Keywords: cache, GETNEXT, registry settings, Advanced, Standard, WMI, APP


This article is written to help you better understand how to configure the SNMP Informant registry settings found in the Advanced, Application Plus Packs, and WMI versions.  First of all, let's define a query for the purpose of this article:

Query: A request made by SNMP Informant to the local Performance Data Help (PDH) sub-system, based on the SNMP GET request that SNMP Informant receives from a network management application or tool.

Now that we know what a query is, let's look at the registry entries used by SNMP Informant.  Values shown are decimal:

Next, let see where the registry is actually changed (thats /HKEY_LOCAL_MACHINE/SOFTWARE/WTCS/informant).  The changes you make are at the product level (i.e. Advanced).

 

The information below this point are the names of the registry values, and describe how they affect the agents' performance.

Entry: DeltaQueryDelay
Applies to:
    Advanced (v1.0 - 1.1.1)
    BizTalk (v1.0 - 1.1.1)
    Exchange (v1.0 - 1.1.1)
    ISAServer (v1.0 - 1.0.1)
    SQLServer (v1.0 - 1.2.1)
    Standard (v1.0 - 1.3)
Registry Type: DWORD
Default Value: 50
Units: milliseconds

For SNMP GETNEXT (WALK) queries, the SNMP Informant agent will create a PDH query related to the OID, take a sample, sleep for the time specified in DeltaQueryDelay, take and second sample, delete the query, and return the calculated value between two samples. The above is exactly the same for the SNMP GET queries except the query will not be destroyed before returning but rather reused for the next query. Increasing this value will give a more accurate sample (e.g., sampling CPU usage over 50 milliseconds will be less accurate than over 1 second) however it will cause the queries to return much slower. For SNMP GET queries, this value will only affect the first query. After the first query, the previous value will be used to calculate the next query.


Entry: GetNextInstanceTimeSpan
Applies to:
    Advanced (v1.0 - 1.1.1)
    BizTalk (v1.0 - 1.1.1)
    Exchange (v1.0 - 1.1.1)
    ISAServer (v1.0 - 1.0.1)
    SQLServer (v1.0 - 1.2.1)
    Standard (v1.0 - 1.3)
    WMI Operating System (v1.0 - 1.2)
    WMI Hardware (v1.0 - 1.1.1)
Registry Type: DWORD
Default Value: 5000 (PDH) 60000 (WMI)
Units: milliseconds

This registry setting applies to SNMP GETNEXT queries only. It is used to identify when to look for new instances. When iterating across the process PDH or WMI object for example, there would be a large performance hit if a if you looked for a new instance each time. Instead, we only look for new instances when GetNextInstanceTimeSpan (default time is 5000 seconds) expires or we switch to a different PDH counter/object. Setting this value to a lower number will keep your process list more accurate (current), but will do as at the expense of longer response time as a new iteration is performed.


Entry: GetInstanceTimeSpan
Applies to:
    Advanced (v1.2 - current)
    BizTalk (v1.2 - current)
    Exchange (v1.2 - current)
    ISAServer (v1.2 - current)
    SQLServer (v1.3 - current)
    Standard (v1.4 - current)
Registry Type: DWORD
Default Value: 60000
Units: milliseconds

This registry setting applies to SNMP GET and GETNEXT queries. It is used to identify when to look for new instances. When iterating across the process PDH object for example, there would be a large performance hit if a if you looked for a new instance each time. Instead, we only look for new instances when GetInstanceTimeSpan (default time is 60 seconds) expires or we switch to a different PDH counter/object. Setting this value to a lower number will keep your process list more accurate (current), but will do as at the expense of longer response time as a new iteration is performed.


Entry: MaxQueryCacheSize
Applies to:
    Advanced (v1.2 - current)
    BizTalk (v1.2 - current)
    Exchange (v1.2 - current)
    ISAServer (v1.2 - current)
    SQLServer (v1.3 - current)
    Standard (v1.4 - current)
    WMI Operating System (v1.2.1 - current)
    WMI Hardware (v1.2 - current)
    WMI Exchange (v1.0 - current)
Registry Type: DWORD
Default Value: 300
Units: Number of queries

The number of different queries that can be cached for both GET and GETNEXT queries per agent. When a request comes in, it looks for the query associated with the OID in the cache. If it doesn't exist, then it creates a query and caches it. The cache only contains entries that require multiple samples. For example, the CPU object will be in the cache, but the Memory usage will not, because the memory object counters are an "as at" (right now) sample. CPU on the other hand, is a calculated average value based on two separate samples. Both the last value and the query itself is stored. The query is used to take another sample. The last value is used for the computation to determine the average value. Increase this value for the necessary agent if you are receiving an error message from SNMP Informant stating that the query cache size was exceeded.


Entry: QueryLifeSpan
Applies to:
    Advanced (v1.2 - current)
    BizTalk (v1.2 - current)
    Exchange (v1.2 - current)
    ISAServer (v1.2 - current)
    SQLServer (v1.3 - current)
    Standard (v1.4 - current)
    WMI Operating System (v1.2.1 - current)
    WMI Hardware (v1.2 - current)
    WMI Exchange (v1.0 - current)
Registry Type: DWORD
Default Value: 21600000
Units: milliseconds

This is the length of time a query (and the accompanying value) can exist in the cache without being requested before it is purged. Default time is 6 hours. If the query lifespan expires, then the query (and accompanying value) is deleted. Once this query is purged from the cache, a computation between it and a new query cannot be performed. Should this be the case, the new query is stored in the cache with a sample value of 0 (in preparation for a second query, where the new value and 0 will be used to calculate an average). If a query that exists in the cache is re-requested, the QueryLifeSpan counter restarts for that query. Increase this value for the necessary agents if you are queries from the SNMP Manager Station are more than 6 hours between samples.