From e85b4d45f00537a68f9790cdf611f8e5e32c0ba4 Mon Sep 17 00:00:00 2001 From: Ken Chiang Date: Mon, 19 Dec 2016 13:33:55 -0800 Subject: [PATCH] Redefine CpuAllPercentUtilization and CpuAllPercentIdle to be 100 times the percentage rounded to the nearest integer. Use aim_time_monotonic. Add ONLP_SNMP_CONFIG_RESOURCE_UPDATE_SECONDS. --- docs/mibs/OCP-ONL-RESOURCE-MIB.txt | 4 ++-- packages/base/any/onlp-snmpd/bin/onl-snmp-mpstat | 2 +- packages/base/any/onlp-snmpd/builds/Makefile | 2 +- .../builds/src/onlp_snmp/module/auto/onlp_snmp.yml | 3 +++ .../module/inc/onlp_snmp/onlp_snmp_config.h | 10 ++++++++++ .../src/onlp_snmp/module/src/onlp_snmp_config.c | 5 +++++ .../src/onlp_snmp/module/src/onlp_snmp_platform.c | 12 +++++------- 7 files changed, 27 insertions(+), 11 deletions(-) diff --git a/docs/mibs/OCP-ONL-RESOURCE-MIB.txt b/docs/mibs/OCP-ONL-RESOURCE-MIB.txt index 21da5843..3167c31b 100644 --- a/docs/mibs/OCP-ONL-RESOURCE-MIB.txt +++ b/docs/mibs/OCP-ONL-RESOURCE-MIB.txt @@ -34,7 +34,7 @@ CpuAllPercentUtilization OBJECT-TYPE MAX-ACCESS read-only STATUS current DESCRIPTION - "The average CPU utilization (in percent). Provided by mpstat." + "The average CPU utilization in percent, multiplied by 100 and rounded to the nearest integer. Provided by mpstat." ::= { Basic 1 } CpuAllPercentIdle OBJECT-TYPE @@ -42,7 +42,7 @@ CpuAllPercentIdle OBJECT-TYPE MAX-ACCESS read-only STATUS current DESCRIPTION - "The average CPU idle time (in percent). Provided by mpstat." + "The average CPU idle time in percent, multiplied by 100 and rounded to the nearest integer. Provided by mpstat." ::= { Basic 2 } END diff --git a/packages/base/any/onlp-snmpd/bin/onl-snmp-mpstat b/packages/base/any/onlp-snmpd/bin/onl-snmp-mpstat index 4b41d1b8..e554a223 100755 --- a/packages/base/any/onlp-snmpd/bin/onl-snmp-mpstat +++ b/packages/base/any/onlp-snmpd/bin/onl-snmp-mpstat @@ -27,7 +27,7 @@ for line in out.split('\n'): if "Average" in line: vals = line.split()[1:] - stats[vals[0]] = { k:int(round(float(v))) \ + stats[vals[0]] = { k:int(round(100*float(v))) \ for (k,v) in zip(keys[1:],vals[1:]) } print json.dumps(stats) diff --git a/packages/base/any/onlp-snmpd/builds/Makefile b/packages/base/any/onlp-snmpd/builds/Makefile index c57a98a8..6a5f08da 100644 --- a/packages/base/any/onlp-snmpd/builds/Makefile +++ b/packages/base/any/onlp-snmpd/builds/Makefile @@ -3,7 +3,7 @@ include $(ONL)/make/any.mk MODULE := onlp-snmpd include $(BUILDER)/standardinit.mk -DEPENDMODULES := onlp_snmp AIM OS snmp_subagent IOF onlplib OS cjson cjson_util +DEPENDMODULES := onlp_snmp AIM OS snmp_subagent IOF onlplib cjson cjson_util DEPENDMODULE_HEADERS := onlp include $(BUILDER)/dependmodules.mk diff --git a/packages/base/any/onlp-snmpd/builds/src/onlp_snmp/module/auto/onlp_snmp.yml b/packages/base/any/onlp-snmpd/builds/src/onlp_snmp/module/auto/onlp_snmp.yml index 6e62a16c..0feaa662 100644 --- a/packages/base/any/onlp-snmpd/builds/src/onlp_snmp/module/auto/onlp_snmp.yml +++ b/packages/base/any/onlp-snmpd/builds/src/onlp_snmp/module/auto/onlp_snmp.yml @@ -56,6 +56,9 @@ cdefs: &cdefs - ONLP_SNMP_CONFIG_AS_SUBAGENT: doc: "Configure as an snmp_subagent client." default: 0 +- ONLP_SNMP_CONFIG_RESOURCE_UPDATE_SECONDS: + doc: "Resource object update period in seconds." + default: 5 definitions: cdefs: diff --git a/packages/base/any/onlp-snmpd/builds/src/onlp_snmp/module/inc/onlp_snmp/onlp_snmp_config.h b/packages/base/any/onlp-snmpd/builds/src/onlp_snmp/module/inc/onlp_snmp/onlp_snmp_config.h index 383142b2..ef7bf971 100644 --- a/packages/base/any/onlp-snmpd/builds/src/onlp_snmp/module/inc/onlp_snmp/onlp_snmp_config.h +++ b/packages/base/any/onlp-snmpd/builds/src/onlp_snmp/module/inc/onlp_snmp/onlp_snmp_config.h @@ -191,6 +191,16 @@ #define ONLP_SNMP_CONFIG_AS_SUBAGENT 0 #endif +/** + * ONLP_SNMP_CONFIG_RESOURCE_UPDATE_SECONDS + * + * Resource object update period in seconds. */ + + +#ifndef ONLP_SNMP_CONFIG_RESOURCE_UPDATE_SECONDS +#define ONLP_SNMP_CONFIG_RESOURCE_UPDATE_SECONDS 5 +#endif + /** diff --git a/packages/base/any/onlp-snmpd/builds/src/onlp_snmp/module/src/onlp_snmp_config.c b/packages/base/any/onlp-snmpd/builds/src/onlp_snmp/module/src/onlp_snmp_config.c index 339c5f42..418b89f1 100644 --- a/packages/base/any/onlp-snmpd/builds/src/onlp_snmp/module/src/onlp_snmp_config.c +++ b/packages/base/any/onlp-snmpd/builds/src/onlp_snmp/module/src/onlp_snmp_config.c @@ -94,6 +94,11 @@ onlp_snmp_config_settings_t onlp_snmp_config_settings[] = { __onlp_snmp_config_STRINGIFY_NAME(ONLP_SNMP_CONFIG_AS_SUBAGENT), __onlp_snmp_config_STRINGIFY_VALUE(ONLP_SNMP_CONFIG_AS_SUBAGENT) }, #else { ONLP_SNMP_CONFIG_AS_SUBAGENT(__onlp_snmp_config_STRINGIFY_NAME), "__undefined__" }, +#endif +#ifdef ONLP_SNMP_CONFIG_RESOURCE_UPDATE_SECONDS + { __onlp_snmp_config_STRINGIFY_NAME(ONLP_SNMP_CONFIG_RESOURCE_UPDATE_SECONDS), __onlp_snmp_config_STRINGIFY_VALUE(ONLP_SNMP_CONFIG_RESOURCE_UPDATE_SECONDS) }, +#else +{ ONLP_SNMP_CONFIG_RESOURCE_UPDATE_SECONDS(__onlp_snmp_config_STRINGIFY_NAME), "__undefined__" }, #endif { NULL, NULL } }; diff --git a/packages/base/any/onlp-snmpd/builds/src/onlp_snmp/module/src/onlp_snmp_platform.c b/packages/base/any/onlp-snmpd/builds/src/onlp_snmp/module/src/onlp_snmp_platform.c index f0e83ab6..88a5ef52 100644 --- a/packages/base/any/onlp-snmpd/builds/src/onlp_snmp/module/src/onlp_snmp_platform.c +++ b/packages/base/any/onlp-snmpd/builds/src/onlp_snmp/module/src/onlp_snmp_platform.c @@ -25,7 +25,7 @@ #include #include "onlp_snmp_log.h" -#include +#include #include #include #include @@ -89,9 +89,6 @@ resource_int_register(int index, const char* desc, } -/* resource objects refreshed with this period; units in seconds */ -#define RESOURCE_UPDATE_PERIOD 5 - /* resource objects */ typedef struct { uint32_t utilization_percent; @@ -103,8 +100,9 @@ static uint64_t resource_update_time; void resource_update(void) { - uint64_t now = os_time_monotonic(); - if (now - resource_update_time > RESOURCE_UPDATE_PERIOD * 1000 * 1000) { + uint64_t now = aim_time_monotonic(); + if (now - resource_update_time > + (ONLP_SNMP_CONFIG_RESOURCE_UPDATE_SECONDS * 1000 * 1000)) { resource_update_time = now; AIM_LOG_INFO("update resource objects"); @@ -124,7 +122,7 @@ void resource_update(void) if (rv == 0) { /* save it */ resources.idle_percent = result; - resources.utilization_percent = 100 - result; + resources.utilization_percent = 100*100 - result; } cJSON_Delete(root); }