Skip to content

CPU monitoring utilities for Node.js apps on Windows.

License

Notifications You must be signed in to change notification settings

driedger/windows-cpu

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

windows-cpu

CPU monitoring utilities for Node.js apps on Windows.

About

A small API that provides load information about any process or the system on Windows platforms. Node.js does have os.loadavg() although it does not work correctly in Windows. Windows-CPU is a module that uses native Windows commands to compile load information. It's a lightweight module that has no dependencies and suitable tests.

Supported Platforms

Windows Version Supported? Notes
XP Home No Does not have wmic. Thanks @inexist3nce
XP Professional Yes Thanks @inexist3nce
Windows 7 Yes
Windows Server 2008 Yes
Windows 8 Yes Thanks @SkyLined, @EricMcRay, @scriptnull, @UltimateBrent
Windows 10 Yes Thanks @inexist3nce

Important Notes

This module has only been tested on a Windows 7 and 2008 Server machine. I do not have access to any other versions of Windows to test, so anyone willing to test this script on other versions and create a pull request for README.md with supported platforms, would be very helpful.

This module uses child processes to call WMIC to gather it's information, if you do not have this command available or cannot spawn child processes, this module will not be of much help to you.

Getting Started

Install windows-cpu via NPM.

npm install windows-cpu --save

Require windows-cpu in your own Node.js application.

var cpu = require('windows-cpu');

Documentation

totalLoad(cb)

Gets the total load in percent for all processes running on the current machine per CPU.

var cpu = require('windows-cpu');

// Get total load on server for each CPU
cpu.totalLoad(function(error, results) {
	if(error) {
	return console.log(error);
	}
	
	// results (single cpu in percent) =>
	// [8]
	
	// results (multi-cpu in percent) =>
	// [3, 10]
});

Parameters

cb: function, A callback function to handle the results (error, results).

nodeLoad(cb)

Gets the total load in percent for all Node.js processes running on the current machine.

var cpu = require('windows-cpu');

// Get total load for all node processes
cpu.nodeLoad(function(error, results) {
	if(error) {
	return console.log(error);
	}
	
	// results =>
	// {
	//    load: 20,
	//    found: [
	//        { pid: 1000, process: 'node', load: 10 },
	//        { pid: 1050, process: 'node#1', load: 6 },
	//        { pid: 1100, process: 'node#2', load: 4 }
	//    ]
	// }
	
	console.log('Total Node.js Load: ' + results.load);
});

Parameters

cb: function, A callback function to handle the results (error, results).

processLoad(cb)

Gets the total load in percent for all processes running on the current machine per CPU.

var cpu = require('windows-cpu');

// Get load for current running node process
cpu.processLoad(function(error, results) {
	if(error) {
	return console.log(error);
	}
	
	// results =>
	// {
	//    load: 10,
	//    found: [
	//        { pid: 1000, process: 'node', load: 10 }
	//    ]
	// }
	
	console.log('Total Process Load: ' + results.load);
});

Parameters

cb: function, A callback function to handle the results (error, results).

findLoad(arg, cb)

Gets the total load in percent for process(es) by a specific search parameter.

var cpu = require('windows-cpu');

// Find the total load for "chrome" processes
cpu.findLoad('chrome', function(error, results) {
     if(error) {
         return console.log(error);
     }

     // results =>
     // {
     //    load: 8,
     //    found: [
     //        { pid: 900, process: 'chrome', load: 4 },
     //        { pid: 905, process: 'chrome#1', load: 0 },
     //        { pid: 910, process: 'chrome#2', load: 4 }
     //    ]
     // }

     console.log('Google Chrome is currently using ' + results.load + '% of the cpu.');
});

Parameters

arg: string|number|array, Specific search parameter. Can be a Process ID, Process Name, or Array of Processes.

cb: function, A callback function to handle the results (error, results).

cpuInfo(cb)

Gets the name of each processor in the machine.

var cpu = require('windows-cpu');

// Get listing of processors
cpu.cpuInfo(function(error, results) {
	if(error) {
	return console.log(error);
	}
	
	// results =>
	// [
	//    'Intel(R) Xeon(R) CPU E5-2609 0 @ 2.40GHz',
	//    'Intel(R) Xeon(R) CPU E5-2609 0 @ 2.40GHz'
	// ]
	
	console.log('Installed Processors: ', results);
});

Parameters

cb: function, A callback function to handle the results (error, results).

totalMemoryUsage(cb)

Gets the total memory usage value in KB , MB and GB .

 var cpu = require('windows-cpu');

 // Get the memory usage 
 cpu.totalMemoryUsage(function(error, results) {
      if(error) {
          return console.log(error);
      }

      // results =>
      // { 
      //    usageInKb: 3236244,
      //    usageInMb: 3160.39453125,
      //    usageInGb: 3.086322784423828 
      // }

      console.log('Total Memory Usage: ', result);
 });

Parameters

cb: function, A callback function to handle the results (error, results).


Issues

Please post any issues you find in the issues section of this repository.

Contributing

If you would like to contribute to windows-cpu, please make sure you follow the guidelines in CONTRIBUTING.md in this repository.

License

Licensed under the MIT License. Please see LICENSE in this repository for more information.

About

CPU monitoring utilities for Node.js apps on Windows.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%