Skip to content

Instantly share code, notes, and snippets.

@jakoboo
Forked from brandon93s/Node.js physical cpu count
Last active August 21, 2023 13:52
Show Gist options
  • Save jakoboo/82be8c031bc09cf2e75dac9253645f2a to your computer and use it in GitHub Desktop.
Save jakoboo/82be8c031bc09cf2e75dac9253645f2a to your computer and use it in GitHub Desktop.
// Source of https://www.npmjs.com/package/physical-cpu-count
'use strict'
const os = require('os')
const childProcess = require('child_process')
function exec (command) {
const output = childProcess.execSync(command, {encoding: 'utf8'})
return output
}
let amount
const platform = os.platform()
if (platform === 'linux') {
const output = exec('lscpu -p | egrep -v "^#" | sort -u -t, -k 2,4 | wc -l')
amount = parseInt(output.trim(), 10)
} else if (platform === 'darwin') {
const output = exec('sysctl -n hw.physicalcpu_max')
amount = parseInt(output.trim(), 10)
} else if (platform === 'win32') {
const output = exec('WMIC CPU Get NumberOfCores')
amount = output.split(os.EOL)
.map(function parse (line) { return parseInt(line) })
.filter(function numbers (value) { return !isNaN(value) })
.reduce(function add (sum, number) { return sum + number }, 0)
} else {
const cores = os.cpus().filter(function (cpu, index) {
const hasHyperthreading = cpu.model.includes('Intel')
const isOdd = index % 2 === 1
return !hasHyperthreading || isOdd
})
amount = cores.length
}
module.exports = amount
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment