[collectd-changes] collectd, the system statistics collection daemon: Changes to 'collectd-5.1'

Florian Forster octo at verplant.org
Sun Apr 7 19:21:13 CEST 2013


 src/snmp.c |  289 +++++++++++++++++++++++++-----------------------------------
 1 file changed, 118 insertions(+), 171 deletions(-)

New commits:
commit 86d3fe407e7a9553709304a88c0b7ab1f8c0e4d9
Merge: 0819379 fcdef56
Author: Florian Forster <octo at collectd.org>
Date:   Sun Apr 7 19:20:14 2013 +0200

    Merge branch 'jk/snmp' into collectd-5.1

commit fcdef5642be518d6115583c65b0582e3d9d8d65b
Author: Florian Forster <octo at collectd.org>
Date:   Tue Apr 2 19:20:17 2013 -0700

    snmp plugin: Fix compilation issue.
    
    Thanks to Magnus for pointing this out.

commit 33bda9d4afd99d74566b84b735585f8038af852e
Author: Florian Forster <octo at collectd.org>
Date:   Fri Mar 29 12:50:23 2013 -0700

    snmp plugin: Allocate "oid_list" on the stack.

commit cdb488b994519d3392f35ec65ac9525d06b8a204
Author: Florian Forster <octo at collectd.org>
Date:   Fri Mar 29 12:49:28 2013 -0700

    snmp plugin: Some coding style fixes.
    
    * Rename "oid_todo_list" to "oid_list_todo".
    * Rename "j" to "oid_list_todo_num".
    * Fix indentation.
    * Declare variables at beginning of block.

commit 080f01b95a5f6006438e2ffee6ae3d093263d148
Author: jkrabbe <jkrabbe at rot13.de>
Date:   Tue Mar 26 15:25:02 2013 +0100

    csnmp_read_table: Change GETNEXT request behaviour (+ bugfix 235)
    
    This patch changes the snmp GETNEXT request behaviour implemented in snmp.c.
    
    The old implementation requested all OIDs using GETNEXT requests until all OIDs
    left their own subtree. In cases were trees in a Data template are much longer
    than other trees the shorter subtrees were re-requested over and over again.
    
    The new implementation will only request OIDs that did not already leave their
    subtrees (see the oid_todo_list implementation for details). This renders the
    function csnmp_check_res_left_subtree useless as the oid_todo_list keeps track
    if all OIDs have finished.
    
    During tests against Cat6500 (CatOS/IOS) as well as Nexus5k (NX-OS) it looks as
    though GETNEXT requests (when requesting multiple OIDs like all 14 dot3Stats
    errors from Etherlike-MIB) can take about 5-10ms (CatOS 30ms) longer if they wrap
    to the next OID.
    
    This does not sound much but when collecting data for the Etherlike-MIB (that only
    has entries for physical interfaces) with a collectd "Instance" variable in IF-MIB
    (that has entries for all physical as well as pseudo [SVIs, VLANs, ...] interfaces)
    this can make a notable difference (e.g. for core routers that have all SVIs and
    VLANs but only some switches attached):
    
    IOS-Core-Router   ifName                 550 entries
                      dot3StatsFCSErrors      70 entries
                                            ------------
                                             480 entries * 10ms =  4.8s overhead
    
    CatOS-Access-Sw.  ifName                 840 entries
                      dot3StatsFCSErrors     490 entries
                                            ------------
                                             350 entries * 30ms = 10.5s overhead
    
    After refactoring csnmp_read_table "Instance" and "Value" OIDs are now handled
    consistently (so no pointer-forward foo needed). It doesn't change any logic
    and data structures, though - so there should not be any impact to other
    functions.
    
    The refactored code also fixes GitHub bugs #235 and #258. This bug is due to
    reusing the status variable in following code section which might lead to errors
    if the subtrees are of different length:
    
    1436    /* Calculate the current suffix. This is later used to check that the
    1437     * suffix is increasing. This also checks if we left the subtree */
    1438    status = csnmp_oid_suffix (&suffix, &vb_name, data->values + i);
    
    Signed-off-by: Florian Forster <octo at collectd.org>




More information about the collectd-changes mailing list