JVM + Linux + Intel Hyperthreading = - PullRequest
2 голосов
/ 26 ноября 2011

Я заметил, что потоки JVM работают как процессы под Linux по некоторым причинам (поправьте меня, если я ошибаюсь). Более того, факт, что Intel Hyperthreading обеспечивает дополнительное распараллеливание только для двух потоков, принадлежащих одному процессу.

Означает ли это, что одна многозадачная программа JVM будет не извлекать выгоду из Hyperthreading в Linux, потому что ее потоки не являются потоками с точки зрения процессоров?

Ответы [ 2 ]

11 голосов
/ 26 ноября 2011

Процессы и потоки не обрабатываются планировщиком в Linux по-разному.Существует ряд ресурсов, которые могут совместно использоваться процессами, как определено системным вызовом clone.Потоки и процессы в том виде, в котором они обычно используются, являются просто названиями часто используемых рецептов.

Если вы наблюдаете за потоками как процессами в JVM, это всего лишь смешение номенклатуры.По обычному определению, если процессы совместно используют виртуальное адресное пространство, тогда они являются «потоками» внутри процесса.

Все аппаратное планирование выиграет от гиперпоточности, независимо от используемой терминологии.Также, чтобы быть абсолютно справедливым, гиперпоточность не позволяет вам запускать больше потоков параллельно: она ускоряет переключение контекста, давая процессам больше времени выполнения.

1 голос
/ 26 ноября 2011

«Потоки JVM запускаются как процессы в Linux» - нет, они работают как LWP (Облегченный процесс).

Потоки Java внутренне реализованы как собственные потоки, т. Е. LWP (в linux), и вы можете увидеть их, используя ps -eLf. Хотя сопоставление между собственным потоком и потоком Java является сложным. Единственный поток, который можно легко отобразить, - это основной поток, так как он будет иметь идентификатор, совпадающий с идентификатором процесса.

JVM определенно получит прибыль от HT.
Из статьи о HT в Java :

SMT обещает значительно расширить серверную часть Java производительность за счет более полного использования существующих процессорных циклов в многопоточные приложения.

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