[lisp-snmp] Changing the representation of OIDs
Brought to you by:
binghe
From: John F. <jf...@ms...> - 2009-05-01 06:08:21
|
Dear Chin Tian, Thanks for your rapid response. We seem to have reduced the memory usage significantly. Hopefully we will be demonstrably more efficient now too! However, according to SBCL, still the largest amount of consing is going on in the object-id code. The problem is that there are many OIDs like this localhost -- NET-SNMP-AGENT-MIB::nsModuleTimeout.0.11.1.3.6.1.2.1.25.3.7.1.1.127 = 255 localhost -- NET-SNMP-AGENT-MIB::nsModuleTimeout.0.11.1.3.6.1.2.1.25.3.7.1.2.127 = 255 localhost -- NET-SNMP-AGENT-MIB::nsModuleTimeout.0.11.1.3.6.1.2.1.25.3.7.1.3.127 = 255 localhost -- NET-SNMP-AGENT-MIB::nsModuleTimeout.0.11.1.3.6.1.2.1.25.3.7.1.4.127 = 255 localhost -- NET-SNMP-AGENT-MIB::nsModuleTimeout.0.11.1.3.6.1.2.1.25.3.7.1.5.127 = 255 localhost -- NET-SNMP-AGENT-MIB::nsModuleTimeout.0.11.1.3.6.1.2.1.25.3.8.1.1.127 = 255 localhost -- NET-SNMP-AGENT-MIB::nsModuleTimeout.0.11.1.3.6.1.2.1.25.3.8.1.2.127 = 255 localhost -- NET-SNMP-AGENT-MIB::nsModuleTimeout.0.11.1.3.6.1.2.1.25.3.8.1.3.127 = 255 localhost -- NET-SNMP-AGENT-MIB::nsModuleTimeout.0.11.1.3.6.1.2.1.25.3.8.1.4.127 = 255 localhost -- NET-SNMP-AGENT-MIB::nsModuleTimeout.0.11.1.3.6.1.2.1.25.3.8.1.5.127 = 255 localhost -- NET-SNMP-AGENT-MIB::nsModuleTimeout.0.11.1.3.6.1.2.1.25.3.8.1.6.127 = 255 localhost -- NET-SNMP-AGENT-MIB::nsModuleTimeout.0.11.1.3.6.1.2.1.25.3.8.1.7.127 = 255 localhost -- NET-SNMP-AGENT-MIB::nsModuleTimeout.0.11.1.3.6.1.2.1.25.3.8.1.8.127 = 255 localhost -- NET-SNMP-AGENT-MIB::nsModuleTimeout.0.11.1.3.6.1.2.1.25.3.8.1.9.127 = 255 Each step along the OID after the last known one (NET-SNMP-AGENT-MIB::nsModuleTimeout) causes a new instance of class object-id to be created. This is quite unnecessary. As I mentioned before, I rather like the idea of being able to pass around simple-vectors of integers as OIDs. Is there a limit to the size of the integers in an OID's number list? (I.e. could we use simple arrays of fixnum.) This would mean that an OID could be of two kinds, either an actual instance of object-id or a vector. Alternatively we could make a defclass like this (rough sketch) (defclass object-id-unknown () ((parent) ; pointer to parent full oid (values :type 'simple-vector))) At the same time I'd like to turn the number-list into a vector as a list is rather wasteful. What do you think? Would you accept a patch for either of the two approaches? [...] |