Как определить количество аппаратных потоков - PullRequest
6 голосов
/ 25 ноября 2010

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

Ответы [ 3 ]

6 голосов
/ 25 ноября 2010

Что подразумевается под аппаратным потоком.

Вы говорите нам.Это на самом деле не установленный термин.

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

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

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

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

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

3 голосов
/ 25 ноября 2010

Это определенно не тот случай, когда количество аппаратных потоков вдвое превышает количество ядер - процессоры AMD не имеют какой-либо гиперпоточности ( пока ), и гиперпоточность может быть отключена вBIOS (как обычно было для процессоров, предшествующих Nehalem, так как на практике он вам не особо понравился).Также нет причины, по которой на каждое ядро ​​обязательно должны приходиться только два аппаратных потока - в системах Power7 4 на ядро ​​.

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

1 голос
/ 25 ноября 2010

Полагаю, вы имели в виду количество процессоров.Вы можете получить его:реализовать это.Узнать больше о размере пула потоков вы можете в Java в Concurrency, раздел 8.2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...