wmicmon

Easy CPU and memory consumption counter by PID with WMIC windows utility.

Usage no npm install needed!

<script type="module">
  import wmicmon from 'https://cdn.skypack.dev/wmicmon';
</script>

README

WMIC monitor

This program provides an easy running interface to WMIC utility to gather usefull information for any process by PID. Sad to say, but it can be used only in Windows envorinment for now.

Usage :

wmicmon = require('wmicmon');

Then you need to create a counter. It can be created in several ways : Simple create a new counter. Creation time will be used as a start time. Optional array of process params can be provided

// create a new counter
counter = wmicmon([params]);

// spawn child_process    
child = spawn('calc');

// connect counter to a process by pid
counter.linkToPid(child.pid);

// OR
// create a new counter for already running process and connect it with single method, if child spawn does not take much time
counter2 = wmicmon.byPid(child.pid);

Or even better, use decorator function for child_process.spawn :

child = wmicmon.spawn('calc');

then spawned child process object will have the additional wmicmon counter property 'wmicmon'

child.on('exit', function(code) {
console.log('Used :');
    console.log( child.wmicmon.stats.PeakWorkingSetSize + 'kb');
    console.log( child.wmicmon.stats.RunningTime + 'ms');
});

Default value of counters argument is : ['KernelModeTime','UserModeTime','PeakWorkingSetSize'] It can be changed with

wmicmon.DefaultCounters = [ array of process info params ];

Counter object provides you with following information :

  • alive Is counter still running. Information updated only when counter is alive. If process with PID already finished or counter was stopped by stop() method alive is set to false and no further information updates will be performed.

  • startTime Time when this counter instance was started.

  • pid Process ID

  • counters object that filled with most recent values e.g. console.log myCounter.counters.PeakWorkingSetSize

In addition to selected information counters object contains property :

  • RunningTime It provides you with real amount of time in ms that passed from counter creation till target process is closed or counter stopped by stop() method.

Use counter.stop() method to stop counter.

Valid process info params :

Caption, CommandLine, CreationClassName, CreationDate, CSCreationClassName, CSName,Description, ExecutablePath, ExecutionState, Handle, HandleCount, InstallDate, KernelModeTime, MaximumWorkingSetSize, MinimumWorkingSetSize, Name, OSCreationClassName, OSName, OtherOperationCount, OtherTransferCount, PageFaults, PageFileUsage, ParentProcessId, PeakPageFileUsage, PeakVirtualSize, PeakWorkingSetSize, Priority, PrivatePageCount, ProcessId, QuotaNonPagedPoolUsage, QuotaPagedPoolUsage, QuotaPeakNonPagedPoolUsage, QuotaPeakPagedPoolUsage, ReadOperationCount, ReadTransferCount, SessionId, Status, TerminationDate, ThreadCount, UserModeTime, VirtualSize, WindowsVersion, WorkingSetSize, WriteOperationCount, WriteTransferCount