Winmem

May 27, 2020 · View on GitHub

version N-API Maintenance mit dep size Known Vulnerabilities Build Status

SlimIO Winmem is a Node.js binding which expose low-level Microsoft APIs on Memory.

This binding expose the following methods/struct:

⚠️ All methods are handled asynchronously in a Worker to not starve the event-loop.

Requirements

Getting Started

This package is available in the Node Package Repository and can be easily installed with npm or yarn.

$ npm i @slimio/winmem
# or
$ yarn add @slimio/winmem

Usage example

Get, global or by process, memory informations !

const winmem = require("@slimio/winmem");

async function main() {
    const perfomanceInfo = await winmem.getPerformanceInfo();
    console.log(perfomanceInfo);

    const globalMemory = await winmem.globalMemoryStatus();
    console.log(globalMemory);

    const processMemories = await windrive.getProcessMemory();
    for (const [processName, processMemory] of Object.entries(processMemories)) {
        console.log(`${processName} : ${JSON.stringify(processMemory, null, 4)}`);
    }
}
main().catch(console.error);

API

getPerformanceInfo: Promise< PerfomanceInfo >

Retrieves the currently performance information. Return a PerfomanceInfo Object.

export interface PerfomanceInfo {
    commitTotal: number;
    commitLimit: number;
    commitPeak: number;
    physicalTotal: number;
    physicalAvailable: number;
    systemCache: number;
    kernelTotal: number;
    kernelPaged: number;
    kernelNonpaged: number;
    pageSize: number;
    handleCount: number;
    processCount: number;
    threadCount: number;
}
globalMemoryStatus: Promise< GlobalMemory >

Retrieves the currently gloval memory status. Return a GlobalMemory Object.

export interface GlobalMemory {
    dwMemoryLoad: number;
    ullTotalPhys: number;
    ullAvailPhys: number;
    ullTotalPageFile: number;
    ullAvailPageFile: number;
    ullTotalVirtual: number;
    ullAvailVirtual: number;
    ullAvailExtendedVirtual: number;
}
getProcessMemory: Promise< ProcessMemory[] >

Retrieves all currently process memories. Return a ProcessMemories Object.

export interface ProcessMemories{
    [processName: string]: ProcessMemory;
}

export interface ProcessMemory {
    error: string;
    processId: number;
    pageFaultCount: number;
    peakWorkingSetSize: number;
    workingSetSize: number;
    quotaPeakPagedPoolUsage: number;
    quotaPagedPoolUsage: number;
    quotaPeakNonPagedPoolUsage: number;
    quotaNonPagedPoolUsage: number;
    pagefileUsage: number;
    peakPagefileUsage: number;
    privateUsage: number;
}

If the result of error property is null, all properties (except processId) are equal to 0

Contribution Guidelines

To contribute to the project, please read the code of conduct and the guide for N-API compilation.

Dependencies

NameRefactoringSecurity RiskUsage
node-addon-api⚠️MajorLowNode.js C++ addon api
node-gyp-build⚠️MajorLowNode-gyp builder

License

MIT