-- *****************************************************************
-- NMS-PROCESS-MIB.my: MIB for CPU and process statistics
--
-- October 2003
--
-- Copyright (c) 2003 by NMS, Inc.
-- All rights reserved.
-- *****************************************************************
--

NMS-PROCESS-MIB DEFINITIONS ::= BEGIN

IMPORTS
	MODULE-IDENTITY,
	OBJECT-TYPE,
	Counter32,
	Gauge32
		FROM SNMPv2-SMI
	TimeStamp,
	DisplayString
		FROM SNMPv2-TC
	MODULE-COMPLIANCE,
	OBJECT-GROUP
		FROM SNMPv2-CONF
	nmsMgmt
		FROM NMS-SMI
--	Unsigned32, EntPhysicalIndexOrZero
--		FROM NMS-TC;   
     Unsigned32
        	FROM SNMPv2-SMI
        EntPhysicalIndexOrZero
	FROM NMS-TC; 


nmsProcessMIB MODULE-IDENTITY
	LAST-UPDATED "200311060000Z"
	ORGANIZATION ""
	CONTACT-INFO
		""
	DESCRIPTION
		"The MIB module to describe active system processes."
	REVISION        "200310160000Z"
	DESCRIPTION
		"Initial version of this MIB."		
	::= { nmsMgmt 109 }

-- This MIB displays memory and CPU utilization on nms devices. CPU 
-- utilization will give a general idea of how busy the processor is. 
-- The numbers are a ratio of the current idle time over the longest 
-- idle time. Please note that this information should be used as an 
-- estimate only. 

nmsProcessMIBObjects	OBJECT IDENTIFIER ::= { nmsProcessMIB 1 }
nmspmCPU		OBJECT IDENTIFIER ::= { nmsProcessMIBObjects 1 }
nmspmProcess		OBJECT IDENTIFIER ::= { nmsProcessMIBObjects 2 }


--NMS CPU Total Table

nmspmCPUTotalTable OBJECT-TYPE
	SYNTAX		SEQUENCE OF NMSpmCPUTotalEntry
	MAX-ACCESS      not-accessible
        STATUS          current
        DESCRIPTION
		"A table of overall CPU statistics. "
	::= { nmspmCPU 1 }

nmspmCPUTotalEntry OBJECT-TYPE
	SYNTAX		NMSpmCPUTotalEntry
	MAX-ACCESS      not-accessible
        STATUS          current
        DESCRIPTION
		"Overall information about the CPU load. Entries in this
		table come and go as CPUs are added and removed from the
		system."
	INDEX	{ nmspmCPUTotalIndex }
	::= { nmspmCPUTotalTable 1 }

NMSpmCPUTotalEntry ::=
	SEQUENCE {
		nmspmCPUTotalIndex		Unsigned32,
		nmspmCPUTotalPhysicalIndex	EntPhysicalIndexOrZero,
		nmspmCPUTotal5sec		Gauge32,
		nmspmCPUTotal1min		Gauge32,
		nmspmCPUTotal5min		Gauge32
	}

nmspmCPUTotalIndex OBJECT-TYPE
	SYNTAX          Unsigned32 (1.. 4294967295)
	MAX-ACCESS      not-accessible
	STATUS          current
	DESCRIPTION
		"An index that uniquely represents a CPU (or group of CPUs)
		whose CPU load information is reported by a row in this table.
		This index is assigned arbitrarily by the engine
		and is not saved over reboots."
	::= { nmspmCPUTotalEntry 1 }

nmspmCPUTotalPhysicalIndex OBJECT-TYPE
	SYNTAX	        EntPhysicalIndexOrZero
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION
		"The entPhysicalIndex of the physical entity for which
		 the CPU statistics in this entry are maintained.
		 The physical entity can be a CPU chip, a group of CPUs,
		 a CPU card etc. The exact type of this entity is described by
		 its entPhysicalVendorType value. If the CPU statistics
		 in this entry correspond to more than one physical entity
		 (or to no physical entity), or if the entPhysicalTable is
		 not supported on the SNMP agent, the value of this object
		 must be zero."
	::= { nmspmCPUTotalEntry 2 }

nmspmCPUTotal5sec OBJECT-TYPE
        SYNTAX          Gauge32 (1..100)
	UNITS		"percent"
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION
		"The overall CPU busy percentage in the last 5 second 
		period. This object is deprecated by nmspmCPUTotal5secRev
		 which has the changed range of	value (0..100)."
	::= { nmspmCPUTotalEntry 3 }

nmspmCPUTotal1min OBJECT-TYPE
        SYNTAX          Gauge32  (1..100)
	UNITS		"percent"
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION
		"The overall CPU busy percentage in the last 1 minute
		period. This object is deprecated by nmspmCPUTotal1minRev
		which has the changed range of value (0..100)."
	::= { nmspmCPUTotalEntry 4 }

nmspmCPUTotal5min OBJECT-TYPE
        SYNTAX          Gauge32 (1..100)
	UNITS		"percent"
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION
		"The overall CPU busy percentage in the last 5 minute
		period. This object is deprecated by nmspmCPUTotal5minRev
		which has the changed range of value (0..100)."
	::= { nmspmCPUTotalEntry 5 }

nmspmCPUMaxUtilization OBJECT-TYPE
        SYNTAX          Gauge32 (1..100)
		UNITS		"percent"
		MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION
		"The max value of nmspmCPUTotal5sec."
	::= { nmspmCPU 2 }

nmspmCPUClearMaxUtilization OBJECT-TYPE
        SYNTAX          INTEGER{clear(1)}
		UNITS		"percent"
		MAX-ACCESS      read-write
        STATUS          current
        DESCRIPTION
		"To clear nmspmCPUMaxUtilization."
	::= { nmspmCPU 3 }



-- NMS Processes Common Table

nmspmProcessTable OBJECT-TYPE
	SYNTAX		SEQUENCE OF NMSpmProcessEntry
        MAX-ACCESS      not-accessible
        STATUS          current
        DESCRIPTION
		"A table of generic information on all active 
		processes on this device."
	::= { nmspmProcess 1 }

nmspmProcessEntry OBJECT-TYPE
	SYNTAX    	NMSpmProcessEntry
        MAX-ACCESS      not-accessible
        STATUS          current
        DESCRIPTION
		"Generic information about an active process on this 
		device. Entries in this table come and go as processes are 
		created and destroyed by the device."
	INDEX	{ nmspmCPUTotalIndex, nmspmProcessPID }
	::= { nmspmProcessTable 1 }

NMSpmProcessEntry ::=
	SEQUENCE {
		nmspmProcessPID
			Unsigned32,
		nmspmProcessName 
			DisplayString,
		nmspmProcessPriority
			INTEGER,
		nmspmProcessTimeCreated
			TimeStamp
	}

nmspmProcessPID OBJECT-TYPE
	SYNTAX    	Unsigned32
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION
		"This object contains the process ID. nmspmProcessTimeCreated
		should be checked against the last time it was polled,
		and if it has changed the PID has been reused and the
		 entire entry should be polled again. The process IDs
		are discrete."
	::= { nmspmProcessEntry 1 }

nmspmProcessName OBJECT-TYPE
	SYNTAX    	DisplayString(SIZE(1..32))
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION
		"The name associated with this process. If the name is
		longer than 32 characters, it will be truncated to the first
		31 characters, and a `*' will be appended as the last
		character to imply this is a truncated process name."
	::= { nmspmProcessEntry 2 }

nmspmProcessPriority OBJECT-TYPE
	SYNTAX		INTEGER {
				critical(0),
				veryhigh(55),
				high(60),
				normal(128),
				low(180),
				verylow(255)
			}
	MAX-ACCESS      read-write
        STATUS          current
        DESCRIPTION
		"The priority level at which the process is 
		running. This object is deprecated by
		nmspmProcExtPriorityRev."
	::= { nmspmProcessEntry 3 }

nmspmProcessTimeCreated OBJECT-TYPE
	SYNTAX		TimeStamp
	MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION
		"The time when the process was created. The process ID 
		and the time when the process was created, uniquely 
		identifies a process."
	::= { nmspmProcessEntry 4 }

-- notifications

nmsProcessMIBNotifPrefix OBJECT IDENTIFIER ::= { nmsProcessMIB 2 }
nmsProcessMIBNotifs OBJECT IDENTIFIER ::=
	{ nmsProcessMIBNotifPrefix 0 }

-- (no notifications are currently defined)


-- conformance information

nmsProcessMIBConformance OBJECT IDENTIFIER ::= { nmsProcessMIB 3 }
nmspmCompliances OBJECT IDENTIFIER ::= { nmsProcessMIBConformance 1 }
nmspmGroups OBJECT IDENTIFIER ::=      { nmsProcessMIBConformance 2 }

nmsProcessMIBCompliance  MODULE-COMPLIANCE
	STATUS	deprecated
	DESCRIPTION
		"The compliance statement for entities which implement
		the NMS Process MIB. This is deprecated and new 
		compliance nmsProcessMIBComplianceRev is added."
	MODULE	-- this module
		MANDATORY-GROUPS { nmspmCPUTotalGroup, nmspmProcessGroup }


	GROUP nmspmProcessExtGroup
	DESCRIPTION
		"The nmspmProcessExtGroup is optional for all entities."

	OBJECT		nmspmProcExtPriority
	MIN-ACCESS	read-only
	DESCRIPTION     "Write access is not required."

	::= { nmspmCompliances 1 }

nmsProcessMIBComplianceRev  MODULE-COMPLIANCE
	STATUS	current
	DESCRIPTION
		"The compliance statement for entities which implement
		the NMS Process MIB. This compliance module
		deprecates nmsProcessMIBCompliance."
	MODULE	-- this module
		MANDATORY-GROUPS { nmspmCPUTotalGroupRev, nmspmProcessGroupRev}	

	GROUP nmspmProcessExtGroupRev
	DESCRIPTION
		"The nmspmProcessExtGroupRev is optional for all
		entities. This object is defined after deprecating
		nmspmProcessExtGroup."
	
	::= { nmspmCompliances 2 }

-- units of conformance

nmspmCPUTotalGroup OBJECT-GROUP
	OBJECTS {
		nmspmCPUTotalPhysicalIndex,
		nmspmCPUTotal5sec,
		nmspmCPUTotal1min,
		nmspmCPUTotal5min
	}
	STATUS  deprecated
	DESCRIPTION
		"A collection of objects providing CPU load monitoring
		information. This group is mandatory for all nms devices.
		This group is deprecated since the objects nmspmCPUTotal5sec,
		nmspmCPUTotal1min and nmspmCPUTotal5min are
		deprecated. A new object nmspmCPUTotalGroupRev is
		added in place of it."
	::= { nmspmGroups 1 }

nmspmProcessGroup OBJECT-GROUP
	OBJECTS {
		nmspmProcessPID,
		nmspmProcessName,
		nmspmProcessuSecs,
		nmspmProcessTimeCreated
	}
	STATUS	deprecated
	DESCRIPTION
		"A collection of objects providing common process 
		monitoring information. This group is mandatory for 
		all nms devices. This object is deprecated
		by nmspmProcessGroupRev."
	::= { nmspmGroups 2 }

nmspmProcessExtGroup OBJECT-GROUP
	OBJECTS {
		nmspmProcExtMemAllocated,
		nmspmProcExtMemFreed,
		nmspmProcExtInvoked,
		nmspmProcExtRuntime,
		nmspmProcExtUtil5Sec,
		nmspmProcExtUtil1Min,
		nmspmProcExtUtil5Min,
		nmspmProcExtPriority
	}
	STATUS	deprecated
	DESCRIPTION
		"A collection of objects providing additional and 
		more detailed process monitoring information. This 
		group is mandatory for all nms devices that have 
		the internal capability to keep this information. 
		This group is deprecated and new group
		nmspmProcessExtGroupRev is added."
	::= { nmspmGroups 3 }

nmspmCPUTotalGroupRev OBJECT-GROUP
	OBJECTS {
		nmspmCPUTotalPhysicalIndex,
		nmspmCPUTotal5secRev,
		nmspmCPUTotal1minRev,
		nmspmCPUTotal5minRev
	}
	STATUS  current
	DESCRIPTION
		"A collection of objects providing CPU load monitoring
		information. This group is mandatory for all nms
		devices. This group deprecates nmspmCPUTotalGroup."
	::= { nmspmGroups 4 }

nmspmProcessExtGroupRev OBJECT-GROUP
	OBJECTS {
		nmspmProcExtMemAllocatedRev,
		nmspmProcExtMemFreedRev,
		nmspmProcExtInvokedRev,
		nmspmProcExtRuntimeRev,
		nmspmProcExtUtil5SecRev,
		nmspmProcExtUtil1MinRev,
		nmspmProcExtUtil5MinRev,
		nmspmProcExtPriorityRev
	}
	STATUS	current
	DESCRIPTION
		"A collection of objects providing additional and 
		more detailed process monitoring information. This 
		group is mandatory for all nms devices that have 
		the internal capability to keep this information.
		This group is formed after deprecating nmspmProcessExtGroup.
		nmspmProcExtMemAllocatedRev, nmspmProcExtMemFreedRev,
		nmspmProcExtInvokedRev, nmspmProcExtRuntimeRev,
		nmspmProcExtUtil5SecRev, nmspmProcExtUtil1MinRev and 
		nmspmProcExtUtil5MinRev are the new objects added."
	::= { nmspmGroups 5 }

nmspmProcessGroupRev OBJECT-GROUP
	OBJECTS {
		nmspmProcessPID,
		nmspmProcessName,
		nmspmProcessAverageUSecs,
		nmspmProcessTimeCreated
	}
	STATUS	current
	DESCRIPTION
		"A collection of objects providing common process 
		monitoring information. This group is mandatory for 
		all nms devices. This object deprecates
		nmspmProcessGroup."
	::= { nmspmGroups 6 }

END


