Adding support of SNMP Performance Monitoring on Windows 2000/XP

This HOW TO focuses on the installation of the requires file on a WINDOWS 2000/XP for having access to Windows Operating System and Applications performance object with SNMP.

Remark: A LUTEUS proprietary compilation of the perfmib.mib MIB file is provided as is but it is not guarantee to work on all Windows system. We apologize for any problem that you could encounter but the tools used to generate the file are not longer supported by Microsoft. However successful tests have been performed by us on Windows 2000 and XP.

With this support you will be able to access the following information.


Memory usage, physical, virtual, paging file ...


Process table statistics, cpu time...


Thread table statistics, number


file system usage


Statistic on Server usage


Processor statistics, cpu utilization %, priviliged time usage %, thread count,

Paging File

Memory on disk (Swap) usage

Physical Disk

 Physical Disk usage

Logical Disk

 Logical Disk usage, free space %, busy time %,read queue lenght...


Disk Cache Statistics, cache hits % ....

network Interface

 network Interface Statistics

ICMP protocol

ICMP protocol Statistics, icmp receive/s, icmp error, icmp dest unreach, echo reply/s...

IP protocol

Internet protocol usage, ip data forwarded/s, ip sent/s, ip receive/s...

TCP protocol

Transport Control protocol usage, active connection, , reset, etablished...

UDP protocol

 UDP protocol statistics


NetBios Over TCPIP protocol


Server Announcements, duplicate master, election pkt/s, annoucement pkts/s...

nBt connection

NetBios Over TCPIP Connection statistics


NetBEUI protocol statistics

NetBEUI Resource

 NetBEUI Resource statistics

Print spooler

Print queue statistics


Operating System kernel Object statistics

rAS Port

Remote Access Server statistics

rAS Total

Remote Access Server statistics


redirector Statistics

server Work Queues

MS MQueue manager statistics




Domain Name Service statistics

dhcp server

Dynamic Host Configuration Protocol

Internet Information Services global

IIS Web server statistics

Terminal Services

Terminal Services Statistics

web service

WEB service Statistics

SMTP Service

Mail service Statistics

Active Directory

Directory service Statistics

job object

Operating System Job Object statistics

On Window 2000/XP the Performance Monitor tool provides support for defining performance objects, performance counters, and object instances, and setting sampling intervals for monitoring data about hardware resources and system services.  

The following example shows a graph of a simple counter, the processor time. 


We provide with this how to a set of files that will allow you to add SNMP support to your WINDOWS. Download it if you want to add it. This support is a proprietary configuration and is not compatible with any other configuration made by others companies. If you already have a partial support of performance object, installing this support will erase it. Before installing, check that this support is not already installed on your machine. By default nothing is installed on Windows system.  

Download set of file

The required dll to add to system32 is provided by Microsoft

Warning: This dll is not longer supported by Microsoft that now uses the WMI infrastructure on Windows 2000 and XP.

The first task is to install the SNMP agent if it is not already installed.

Look at our How_to Install Window SNMP Agent for installation. 

After that, the SNMP agent installed we still cannot answer to SNMP request on the Windows performance objects. The following steps have to be completed before. 

The SNMP agent use a special dll file and an ini file when initializing. By default this file are not provided when installing a Windows 2000/XP system. The perfmib.dll is provided by Microsoft in the Windows NT resource kit. 

Modfify the registry to add the support of performance monitoring. Using RegEdit (or RegEdt32) you will need to add the following keys with their appropriate values to your registry. It is wise to backup your registry before making these changes. 

Go To Tree:

Add String: the next number available in the list
With Value: "SOFTWARE\Microsoft\PerformanceAgent\CurrentVersion" 

Remark: this key will not exist if the SNMP service is not installed on the machine

 Add Key:

Add Expandable string : "Pathname"
With Value: "%SystemRoot%\System32\perfmib.dll"

 You can also use the perfmib.reg file to initialize this value.

Before running it open regedit and get the next munber for the ExtensionAgents available. (in our example it is 9). 

Here after the contents of the perfmib.reg 

Pathname = REG_EXPAND_SZ %SystemRoot%\System32\perfmib.dll
                 9 = SOFTWARE\Microsoft\PerformanceAgent\CurrentVersion 

Next run the regini perfmib.reg command in a dos session. This will add the missing registry keys. 

By adding these keys you will be configuring the perfmib.dll as an SNMP Extension Agent. The Windows SNMP Service is quite extensible. When the service is started, it queries for the existence of each Extension Agent and the MIB tree that each Agent supports. Based on the MIB tree result set that the SNMP Agent gets at startup determines what OIDs are exposed during an SNMP walk.  

Remark: If there's a broken SNMP Extension Agent DLL, the walk may break because the SNMP Agent currently relies on the Extension Agent DLL to respond accordingly. 

Stop the SNMP service. Use the Net stop SNMP service

Or open the services window by clicking in services in the control panel -> administration Tool window 

Copy the provided file (perfmib.dll, perfmib.ini) into to the system32/ subdirectory of Windows. 

Restart the SNMP service with a net start SNMP service. Check in the Event log that your SNMP service is well restarded and that not error occurs. 

The following screen shot shows a problem when trying to load our mib file. In fact the registry was not correctly setup.

event properties

 Copy the perfmib.mib into the /bin/mibs of LoriotPro

Compile the new file with the Mib compiler of LoriotPro. To compile a new mib refer to LoriotPro documentation. The compiler is accessible in the MIB menu. You have to scan (the subdirectory /mibs) for discovering the perfmib.mib file. Then browse the list, find it and press the compile this file button. Or browse manually your directory and select the file and ckick on compile this MIB file (following screeshot).


 After this compilation you could open your MIB tree, and in the search bar enter Microsoft and press the MIB Tree button

 You should be able to see the Microsoft MIB performance objects.

 Mib Tree

 To check that your mib is well installed, first select in the directory tree the host object where you have installed the perfmib files, then select the Microsoft MIB memory object and from the LoriotPro contextual menu start the walk sub tree option. 

The perfmib.mib is visible as a LoriotPro WEB report in this site for information

After walking the MIB output window opens with all the objects and their current values.

Mib walk

Warning : Due to incorrect Object answer the MIB walking doesn’t work on all objects.

Do a simple get to check that the object answer.

Consult the following HOW TO for using these new MIB object. 

How to add performance objects to the Mib file

In our example, the perfmib.mib and perfmib.ini file contain the description of the performance object exposed to SNMP request. Those files were created using perf2mib.exe. The ini file contain a list a all the object that will be accessible with SNMP. The Mib file is used on the SNMP manager to send request to the Windows SNMP agent. 

The perfmib.mib provided with this How To do not contain all the performance object. 

If there are other Performance Monitor objects that you would like to reach from SNMP it is necessary to recreate these files with the perf2mib.exe program. 

Typically you add performance object that are available under the Window performance monitor tool. The following screen shot shows the various counters for the memory performance object. 


 The syntaxe of perf2mib:

perf2mib MIB_filename INI_filename [Object_name MIB_index MIB_prefix]

Object_ name is the name of the performance object
MIB_filename is the name of the mib file. We use perfmib.mib as file name
INI_filename is the name of the ini file. We use perfmib.ini as file name
Object_name is the name of the performance objet available in the upper screenshot
MIB_index is the index of the set of mib object. Use sequenced number.
MIB_prefix is the prefix use in front of the objet in the mib. We set here what we want

Note that the OID reference is flexible under the performance tree depending on the parameters MIB_index you feed perf2mib.exe.  

We give you here the steps we use to create the set of file perfmib.mib and perfmib.ini. 

We first created a batch file called genperf.bat.


perf2mib perfmib.mib perfmib.ini memory 1 MS-mem- process 2 MS-proc- thread 3 MS- system 4 MS-sys- server 5 MS-serv- processor 6 MS-procsr- "Paging File" 7 MS-paging- physicaldisk 8 MS-pdisk- logicaldisk 9 MS-logdsk- cache 10 MS-cach- iCMP 12 MS-icmp- iP 13 MS-ip- tCP 14 MS-tcp- uDP 15 MS-udp- browser 16 MS-brow- "nBT Connection" 17 MSnbtcon netBEUI 18 MS-nbeuinet- "netBEUI Resource" 19 MS-nbeuir- "Print queue" 20 MS-spool- objects 21 MS-obj- "rAS Port" 22 MS-rasprt- "rAS Total" 23 MS-rastot- redirector 24 MS-redir- "server Work Queues" 25 MS-swq- telephony 26 MS-tele- "DNS" 27 MS-dns- "dhcp server" 28 MS-dhcp- "Internet Information Services Global" 29 MS-IIS- "terminal Services" 30 MS-tsrv- "terminal Services Session" 31 MS-tsses- "Active Server Pages" 32 MS-asp- "ftp Service" 33 MS-ftp- "web service" 34 MS-web- "smtp server" 35 MS-smtp- "NTDS" 36 MS-ActiveDir- "IAS authentication server" 37 MS-iias- "job object" 38 MS-jobo-

echo off
REM memory 1 MS-mem-
REM process 2 MS-proc-
REM thread 3 MS-
REM system 4 MS-sys-
REM server 5 MS-serv-
REM processor 6 MS-procsr-
REM "Paging File" 7 MS-paging-
REM physicalDisk 8 MS-pdisk-
REM logicalDisk 9 MS-logdsk-
REM cache 10 MS-cach-
REM "network Interface" 11 MS-netint-
REM iCMP 12 MS-icmp-
REM iP 13 MS-ip-
REM tCP 14 MS-tcp-
REM uDP 15 MS-udp-
REM browser 16 MS-brow-
REM "nBT Connection" 17 MS-nbtcon-
REM netBEUI 18 MS-nbeuinet-
REM "netBEUI Resource" 19 MS-nbeuir-
REM "print spooler" 20 MS-spool-
REM objects 21 MS-obj-
REM "rAS Port" 22 MS-rasprt-
REM "rAS Total" 23 MS-rastot-
REM redirector 24 MS-redir-
REM "server Work Queues" 25 MS-swq-
REM telephony 26 MS-tele-
REM dns 27 MS-dns-
REM "dhcp server" 28 MS-dhcp-
REM "Internet Information Services global" 29 MS-IIS-
REM "terminal Servives" 30 MS-tssrv-
REM "terminal Services Session" 31 MS-tsses-
REM "Active Server Pages" 32 MS-asp-
REM "ftp Service" 33 MS-ftp-
REM "web service" 34 MS-Web-
REM "SMTP Service" 35 MS-smtp-
REM NTDS 36 MS-ACtiveDir-
REM "IAS authentication server" 37 MS-iias-
REM "job object" 38 MS-jobo-
echo on

The REM here are only convenient for adding new performance object to the perf2mib command line. 

Run the .bat file in a dos session. 

Remark : We use prefix that we define ourself. Within LoriotPro when you call object by their OID name the name should exactly fit. If you call the OID with the numeral value the name as no impact and could be change later on.

Warning : The MIB index is created when running perf2mib. The index for the same object could change from one generation to another, if you shift the index value. If you add new object do not insert it or replace existing object, add to this end of the list and use the next index number available.

Warning: Make a backup of your previous perfmib.mib and perfmib.ini file before running genperf.bat. This avoids overwriting them. 

Warning: The perfmib.mib file and the perfmib.ini file are link and could not be disjoint. The same ini file should be installed on all the Windows system (server and station) within the same company. The mib file generated with the ini file should be installed on the management station (LoriotPro). 

Then get the files perfmib.ini and perfmib.mib and proceed to the installation as previously defined.