【问题标题】:require('os').cpus().length returns 24 .... can't understand how?require('os').cpus().length 返回 24 .... 不明白怎么做?
【发布时间】:2014-05-30 22:55:49
【问题描述】:

我有一个具有以下配置的 Windows 桌面:Intel Xeon(R) CPU E5645 @2.40GHz(2 个处理器)
具有 24 GB RAM 和 64 位操作系统

当我运行以下代码时。

var cpuCount = require('os').cpus().length;

它返回 cpuCount 为 24

谁能解释一下这到底是什么意思?它是如何确定我只有 2 个处理器的 24 个 CPU 的。

【问题讨论】:

  • 桌面安装了 Windows 7 SP1。
  • 您应该查看实际输出的内容。猜测一下,您的 2 个处理器中的每一个都有 6 个内核,并且每个内核可以同时执行 2 个线程(这主要是英特尔营销的某种假象)。每个独立线程插槽(每个内核 2 个)可能通过该接口作为“CPU”公开,这意味着您有 24 个这样的条目。
  • 感谢您的回复...我不明白您所说的“您应该看看实际输出的内容”是什么意思
  • 我的意思是“打印require('os').cpus()的输出并检查它”。

标签: node.js concurrent-programming


【解决方案1】:

http://ark.intel.com/products/48768/Intel-Xeon-Processor-E5645-12M-Cache-2_40-GHz-5_86-GTs-Intel-QPI?q=Xeon%20e5645

先进技术部分。它说你的 CPU 支持Hyper-Threading

来自维基百科:

对于物理上存在的每个处理器内核,操作系统会寻址两个虚拟或逻辑内核...

因此,您有两个处理器,每个处理器有 6 个物理内核(但有 12 个逻辑或虚拟内核):

(2 x 6) x 2 = 24

还可以查看 node.js docs:

os.cpus()

返回一个对象数组,其中包含有关已安装的每个 CPU/内核的信息:型号、速度(以 MHz 为单位)和时间(一个对象包含 CPU/内核花费的毫秒数:user、nice、sys、idle、和中断)。

这就是require('os').cpus() 返回的数组包含 24 个元素的原因。

【讨论】:

  • 不错的答案,虽然文档不是很清楚。假设这种情况,最好说os.cpus() 返回一个对象数组,其中包含有关每个虚拟或逻辑 CPU/核心的信息。
猜你喜欢
  • 2021-08-07
  • 1970-01-01
  • 2015-09-12
  • 1970-01-01
  • 2016-07-22
  • 2016-03-16
  • 2019-12-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多