cpu() cache refactored (windows)
This commit is contained in:
parent
25ed726e45
commit
0d9f5251c5
129
lib/cpu.js
129
lib/cpu.js
@ -862,12 +862,6 @@ function getCpu() {
|
|||||||
}
|
}
|
||||||
result = cpuBrandManufacturer(result);
|
result = cpuBrandManufacturer(result);
|
||||||
result.revision = util.getValue(lines, 'revision', ':');
|
result.revision = util.getValue(lines, 'revision', ':');
|
||||||
result.cache.l1d = 0;
|
|
||||||
result.cache.l1i = 0;
|
|
||||||
result.cache.l2 = util.getValue(lines, 'l2cachesize', ':');
|
|
||||||
result.cache.l3 = util.getValue(lines, 'l3cachesize', ':');
|
|
||||||
if (result.cache.l2) { result.cache.l2 = parseInt(result.cache.l2, 10) * 1024; }
|
|
||||||
if (result.cache.l3) { result.cache.l3 = parseInt(result.cache.l3, 10) * 1024; }
|
|
||||||
result.vendor = util.getValue(lines, 'manufacturer', ':');
|
result.vendor = util.getValue(lines, 'manufacturer', ':');
|
||||||
result.speedMax = Math.round(parseFloat(util.getValue(lines, 'maxclockspeed', ':').replace(/,/g, '.')) / 10.0) / 100;
|
result.speedMax = Math.round(parseFloat(util.getValue(lines, 'maxclockspeed', ':').replace(/,/g, '.')) / 10.0) / 100;
|
||||||
if (result.speed === 0 && (result.brand.indexOf('AMD') > -1 || result.brand.toLowerCase().indexOf('ryzen') > -1)) {
|
if (result.speed === 0 && (result.brand.indexOf('AMD') > -1 || result.brand.toLowerCase().indexOf('ryzen') > -1)) {
|
||||||
@ -914,26 +908,7 @@ function getCpu() {
|
|||||||
result.cores = result.cores * countProcessors;
|
result.cores = result.cores * countProcessors;
|
||||||
result.physicalCores = result.physicalCores * countProcessors;
|
result.physicalCores = result.physicalCores * countProcessors;
|
||||||
}
|
}
|
||||||
const parts = data[1].split(/\n\s*\n/);
|
result.cache = parseWinCache(data[0], data[1]);
|
||||||
parts.forEach(function (part) {
|
|
||||||
lines = part.split('\r\n');
|
|
||||||
const cacheType = util.getValue(lines, 'CacheType');
|
|
||||||
const level = util.getValue(lines, 'Level');
|
|
||||||
const installedSize = util.getValue(lines, 'InstalledSize');
|
|
||||||
// L1 Instructions
|
|
||||||
if (level === '3' && cacheType === '3') {
|
|
||||||
result.cache.l1i = parseInt(installedSize, 10);
|
|
||||||
}
|
|
||||||
// L1 Data
|
|
||||||
if (level === '3' && cacheType === '4') {
|
|
||||||
result.cache.l1d = parseInt(installedSize, 10);
|
|
||||||
}
|
|
||||||
// L1 all
|
|
||||||
if (level === '3' && cacheType === '5' && !result.cache.l1i && !result.cache.l1d) {
|
|
||||||
result.cache.l1i = parseInt(installedSize, 10) / 2;
|
|
||||||
result.cache.l1d = parseInt(installedSize, 10) / 2;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
const hyperv = data[2] ? data[2].toString().toLowerCase() : '';
|
const hyperv = data[2] ? data[2].toString().toLowerCase() : '';
|
||||||
result.virtualization = hyperv.indexOf('true') !== -1;
|
result.virtualization = hyperv.indexOf('true') !== -1;
|
||||||
|
|
||||||
@ -1483,42 +1458,17 @@ function cpuCache(callback) {
|
|||||||
}
|
}
|
||||||
if (_windows) {
|
if (_windows) {
|
||||||
try {
|
try {
|
||||||
util.powerShell('Get-CimInstance Win32_processor | select L2CacheSize, L3CacheSize | fl').then((stdout, error) => {
|
const workload = [];
|
||||||
if (!error) {
|
workload.push(util.powerShell('Get-CimInstance Win32_processor | select L2CacheSize, L3CacheSize | fl'));
|
||||||
let lines = stdout.split('\r\n');
|
workload.push(util.powerShell('Get-CimInstance Win32_CacheMemory | select CacheType,InstalledSize,Level | fl'));
|
||||||
result.l1d = 0;
|
|
||||||
result.l1i = 0;
|
Promise.all(
|
||||||
result.l2 = util.getValue(lines, 'l2cachesize', ':');
|
workload
|
||||||
result.l3 = util.getValue(lines, 'l3cachesize', ':');
|
).then((data) => {
|
||||||
if (result.l2) { result.l2 = parseInt(result.l2, 10) * 1024; }
|
result = parseWinCache(data[0], data[1]);
|
||||||
if (result.l3) { result.l3 = parseInt(result.l3, 10) * 1024; }
|
|
||||||
}
|
if (callback) { callback(result); }
|
||||||
util.powerShell('Get-CimInstance Win32_CacheMemory | select CacheType,InstalledSize,Level | fl').then((stdout, error) => {
|
resolve(result);
|
||||||
if (!error) {
|
|
||||||
const parts = stdout.split(/\n\s*\n/);
|
|
||||||
parts.forEach(function (part) {
|
|
||||||
const lines = part.split('\r\n');
|
|
||||||
const cacheType = util.getValue(lines, 'CacheType');
|
|
||||||
const level = util.getValue(lines, 'Level');
|
|
||||||
const installedSize = util.getValue(lines, 'InstalledSize');
|
|
||||||
// L1 Instructions
|
|
||||||
if (level === '3' && cacheType === '3') {
|
|
||||||
result.l1i = parseInt(installedSize, 10);
|
|
||||||
}
|
|
||||||
// L1 Data
|
|
||||||
if (level === '3' && cacheType === '4') {
|
|
||||||
result.l1d = parseInt(installedSize, 10);
|
|
||||||
}
|
|
||||||
// L1 all
|
|
||||||
if (level === '3' && cacheType === '5' && !result.l1i && !result.l1d) {
|
|
||||||
result.l1i = parseInt(installedSize, 10) / 2;
|
|
||||||
result.l1d = parseInt(installedSize, 10) / 2;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
if (callback) { callback(result); }
|
|
||||||
resolve(result);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
if (callback) { callback(result); }
|
if (callback) { callback(result); }
|
||||||
@ -1529,6 +1479,61 @@ function cpuCache(callback) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function parseWinCache(linesProc, linesCache) {
|
||||||
|
let result = {
|
||||||
|
l1d: null,
|
||||||
|
l1i: null,
|
||||||
|
l2: null,
|
||||||
|
l3: null,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Win32_processor
|
||||||
|
let lines = linesProc.split('\r\n');
|
||||||
|
result.l1d = 0;
|
||||||
|
result.l1i = 0;
|
||||||
|
result.l2 = util.getValue(lines, 'l2cachesize', ':');
|
||||||
|
result.l3 = util.getValue(lines, 'l3cachesize', ':');
|
||||||
|
if (result.l2) { result.l2 = parseInt(result.l2, 10) * 1024; }
|
||||||
|
if (result.l3) { result.l3 = parseInt(result.l3, 10) * 1024; }
|
||||||
|
|
||||||
|
// Win32_CacheMemory
|
||||||
|
const parts = linesCache.split(/\n\s*\n/);
|
||||||
|
let l1i = 0;
|
||||||
|
let l1d = 0;
|
||||||
|
let l2 = 0;
|
||||||
|
parts.forEach(function (part) {
|
||||||
|
const lines = part.split('\r\n');
|
||||||
|
const cacheType = util.getValue(lines, 'CacheType');
|
||||||
|
const level = util.getValue(lines, 'Level');
|
||||||
|
const installedSize = util.getValue(lines, 'InstalledSize');
|
||||||
|
// L1 Instructions
|
||||||
|
if (level === '3' && cacheType === '3') {
|
||||||
|
result.l1i = result.l1i + parseInt(installedSize, 10) * 1024;
|
||||||
|
}
|
||||||
|
// L1 Data
|
||||||
|
if (level === '3' && cacheType === '4') {
|
||||||
|
result.l1d = result.l1d + parseInt(installedSize, 10) * 1024;
|
||||||
|
}
|
||||||
|
// L1 all
|
||||||
|
if (level === '3' && cacheType === '5') {
|
||||||
|
l1i = parseInt(installedSize, 10) / 2;
|
||||||
|
l1d = parseInt(installedSize, 10) / 2;
|
||||||
|
}
|
||||||
|
// L2
|
||||||
|
if (level === '4' && cacheType === '5') {
|
||||||
|
l2 = l2 + parseInt(installedSize, 10) * 1024;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (!result.l1i && !result.l1d) {
|
||||||
|
result.l1i = l1i;
|
||||||
|
result.l1d = l1d;
|
||||||
|
}
|
||||||
|
if (l2) {
|
||||||
|
result.l2 = l2;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
exports.cpuCache = cpuCache;
|
exports.cpuCache = cpuCache;
|
||||||
|
|
||||||
// --------------------------
|
// --------------------------
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user