npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

node-perfmon-dh

v0.3.3

Published

Windows perfmon metrics stream

Downloads

7

Readme

node-perfmon-dh

Streaming Performance Monitor metrics for Node on Windows.

node-perfmon-dh is a fork of node-perfmon. I forked that repo and submitted pull requests for functionality I previously requested be added. It doesn't look like the owner is maintaining it anymore, so I published my fork. If the original is maintained, then I will remove this one. Most of this README is a copy of the original with a few changes supporting the reasons I forked it.

node-perfmon is a thin wrapper around MS Windows typeperf command that provides a ReadableStream interface to the typeperf command output. perfmon wraps up the typeperf executable as a child_process. It ensures that no more than one process will be spawned for each host machine streaming metrics.

Dependenices

Node, Windows, and the typeperf executable in your path. I've never seen a Windows installation that didn't have it, but it's not out of the realm of possibility. Windows For Workgroups 3.11 had it. Maybe. Definitely NT4 and up.

Only the machine running Node needs Node. Makes perfect sense. The only requirements to stream metrics from a remote machine are Windows running on that machine, and appropriate permissions to do so.

Install

npm install perfmon

Usage

The most basic usage is to stream a single metric from the local machine. The perfmon function returns an instance of a ReadableStream. You can either pass a callback as the last argument, or attach to the data and error events on the returned Stream.

The first two arguments to perfmon, counters and hosts, can be strings or arrays. hosts is optional and assumed to be local machine if not specified.

var perfmon = require('perfmon');

perfmon('\\processor(_total)\\% processor time', function(err, data) {
	console.log(data);
});

Perfmon can also be called with an options object instead of the counters and hosts args. This options object supports the following properties:

{
  counters:[],             // array of counters as string
  hosts:[],                // array of hosts as strings
  sampleInterval: Number,  // Number indicating how many seconds between metric samples (-si), default is 1
  sampleCount: Number      // Number indicating how many sample to run (-sc)
}

The data object logged to the console:

{ host: 'yourcomputer',
  time: 1328067580990, // UTC timestamp in ms
  counters:
  { '\\processor(_total)\\% processor time': 17 }
}

List available metric counters

Use list to return a, um, list of available counters. To get a sense of all of the counters available on the machine, either open up the perfmon executable, or run typeperf -qx > out.txt.

perfmon.list('memory', function(err, data) {
	console.log(data);
});

The data object logged to the console:

{ counters:
  [ 'memory\\Page Faults/sec',
    'memory\\Available Bytes',
    'memory\\Committed Bytes',
    // ... omitted for brevity ...
    'memory\\Available KBytes',
    'memory\\Available MBytes',
    'memory\\Transition Pages RePurposed/sec',
    'memory\\Free & Zero Page List Bytes',
    'memory\\Modified Page List Bytes',
    'memory\\Standby Cache Reserve Bytes',
    'memory\\Standby Cache Normal Priority Bytes',
    'memory\\Standby Cache Core Bytes' ],
host: 'yourcomputer' }

Stream remote host metrics

You can connect to any host on your network and stream metrics from that machine.

var counters = [
	'\\processor(_total)\\% processor time',
	'\\memory\\available bytes',
];

perfmon(counters, 'somecomputer.somewhere.local', function(err, data) {
	console.log(data);
});