【问题标题】:How to determine the number of Hardware Threads如何确定硬件线程的数量
【发布时间】:2010-11-25 08:22:06
【问题描述】:

硬件线程是什么意思。是否总是双倍可用的处理器内核数量?如何确定 Intel Core2 Duo 处理器中的硬件线程数?可以通过Java代码确定吗?

【问题讨论】:

  • 硬件线程是内核级别的概念,取决于您的操作系统。

标签: java concurrency parallel-processing


【解决方案1】:

硬件线程是什么意思。

你告诉我们。这不是一个真正的既定术语。

是否总是双倍可用的处理器内核数?

啊,现在您好像在谈论 hyperthreading,其中 CPU 内核中的部分冗余被用来“伪造”一个额外的内核。

如何确定数量 Intel Core2 Duo 中的硬件线程 处理器?是否可以确定 通过 Java 代码?

您可以尝试在系统属性中查找某些内容,但这不会是标准的(即取决于 JVM 和操作系统)。

就我个人而言,我只是使用一个合理的默认值(4 或 8 个线程 - 有几个线程比不使用可​​用内核更可取)并使其可配置。

【讨论】:

【解决方案2】:

硬件线程的数量肯定不是内核数量的两倍——AMD 处理器没有任何类型的超线程 (yet),并且超线程可以在 BIOS 中关闭(原样通常是用于 pre-nehalem 处理器的,因为它在实践中并没有给你买太多)。也没有理由为什么每个内核必须只有两个硬件线程——Power7 系统有4 per core

没有独立于操作系统或硬件的方法来进行这些检查。我知道的唯一可以相当便携地查询此信息的库是hardware locality (hwloc) library。它是一个 C 库,所以从 Java 调用应该很简单。

【讨论】:

    【解决方案3】:

    我想你的意思是 CPU 的数量。您可以通过以下方式获得它:

    int N_CPUS = Runtime.getRuntime().availableProcessors();

    使用此值,您可以确定线程池中应该存在多少线程(如果您打算实现它)。要阅读更多关于线程池大小的信息,您可以在 Java in Concurrency 中,第 8.2 节。

    【讨论】:

      猜你喜欢
      • 2011-08-01
      • 2012-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-15
      • 2016-09-27
      • 1970-01-01
      相关资源
      最近更新 更多