在 AWS EC2 中集群时 node.js os.cpus() 显示的线程数不正确
Incorrect number of threads shown from node.js os.cpus() when clustering in AWS EC2
有没有办法从 node.js 访问 AWS c4.8xlarge
实例中的所有 324 个线程?除了 os.cpus()
之外,还有其他获取线程数的方法吗?
我们正在使用大小为 c4.8xlarge
的 CPU 优化 AWS 实例,它有 36 个虚拟 CPU,每个有 9 个内核,总共有 324 个线程(36 x 9).
当我们运行这个脚本测量线程数时,它显示36,但它没有显示每个vCPU上的9个核心的任何信息CPU。
const cluster = require('cluster');
const numCPUs = require('os').cpus().length;
if (cluster.isMaster) {
console.log(`Master ${process.pid} is running`);
// Fork workers.
for (let i = 0; i < numCPUs; i++) {
cluster.fork();
}
cluster.on('exit', (worker, code, signal) => {
console.log(`worker ${worker.process.pid} died`);
});
} else {
console.log("Number of cores: " + numCPUs);
process.exit(0);
}
这是一个问题,因为我们 运行 这个脚本在另一台机器上运行,该机器有 1 个 CPU 和 8 个超线程内核,它报告 16 CPUs(这是正确的) .
根据各种来源(包括 a blog article on Amazon's site), a 'c4.8xlarge' has 18 hyperthreaded cores, totalling 36 vCPUs (which are hyperthreaded cores)。
有没有办法从 node.js 访问 AWS c4.8xlarge
实例中的所有 324 个线程?除了 os.cpus()
之外,还有其他获取线程数的方法吗?
我们正在使用大小为 c4.8xlarge
的 CPU 优化 AWS 实例,它有 36 个虚拟 CPU,每个有 9 个内核,总共有 324 个线程(36 x 9).
当我们运行这个脚本测量线程数时,它显示36,但它没有显示每个vCPU上的9个核心的任何信息CPU。
const cluster = require('cluster');
const numCPUs = require('os').cpus().length;
if (cluster.isMaster) {
console.log(`Master ${process.pid} is running`);
// Fork workers.
for (let i = 0; i < numCPUs; i++) {
cluster.fork();
}
cluster.on('exit', (worker, code, signal) => {
console.log(`worker ${worker.process.pid} died`);
});
} else {
console.log("Number of cores: " + numCPUs);
process.exit(0);
}
这是一个问题,因为我们 运行 这个脚本在另一台机器上运行,该机器有 1 个 CPU 和 8 个超线程内核,它报告 16 CPUs(这是正确的) .
根据各种来源(包括 a blog article on Amazon's site), a 'c4.8xlarge' has 18 hyperthreaded cores, totalling 36 vCPUs (which are hyperthreaded cores)。