2010-11-25 3 views
5

Что такое аппаратная нить. Всегда ли удваивается количество процессорных ядер? Как определить количество аппаратных потоков в процессоре Intel Core2 Duo? Может ли это быть определено через Java-код?Как определить количество аппаратных потоков

+2

Аппаратный поток представляет собой концепцию уровня ядра и зависит от вашей операционной системы. – EboMike 2010-11-25 08:33:04

ответ

5

Что подразумевается под аппаратной резьбой.

Скажите нам. Это не действительно установленный срок.

Всегда ли удваивается количество процессорных ядер?

А теперь кажется, что вы говорите о hyperthreading, где частичные избыточности в ядре процессора используются для «подделки» дополнительного ядра.

Как определить количество аппаратных потоков в процессор Intel Core2 Duo? Можно ли определить через код Java?

Вы можете попытаться найти что-то в свойствах системы, но это не будет стандартным (то есть зависит от JVM и ОС).

Лично я бы использовал разумные настройки по умолчанию (4 или 8 потоков - с несколькими слишком много, чтобы не использовать доступные ядра) и сделать его настраиваемым.

+1

Хотелось бы узнать, почему iJeeves хочет знать. Он может думать о проблемах, выходящих далеко за рамки основных процессоров ...? – TheBlastOne 2010-11-25 08:47:06

1

Я полагаю, вы имели в виду количество процессоров. Вы можете получить его:

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

Используя это значение, вы можете определить, сколько потоков должно существовать в пуле потоков, если вы планируете его реализовать. Чтобы узнать больше о размере пула потоков, вы можете в Java в разделе «Параллелизм», раздел 8.2.

3

Определенно не так, что количество аппаратных потоков в два раза больше ядер - процессоры AMD не имеют какого-либо гиперпотока (yet), а гиперпоточность может быть отключена в BIOS (как правило, был для процессоров pre-nehalem, так как на самом деле он практически не покупал вас на практике). Также нет причин, по которым это должно было быть только двумя аппаратными потоками на одно ядро ​​- в системах Power7 есть 4 per core.

Невозможно выполнить эти проверки с помощью ОС или оборудования. Единственная библиотека, которую я знаю, которая довольно портативно может запросить эту информацию, - это библиотека hardware locality (hwloc). Это C-библиотека, поэтому довольно просто позвонить с Java.

Смежные вопросы