Количество ядер процессора для параллельного потока Java 8 - PullRequest
0 голосов
/ 05 февраля 2019

Я поставил ниже одну из виртуальных машин.

Так, что касается ссылки , параллельные потоки используют значение по умолчанию ForkJoinPool.commonPool, которое по умолчанию имеет на один поток меньше, чем у васпроцессоры, как возвращено Runtime.getRuntime().availableProcessors().

Если я сделаю Runtime.getRuntime().availableProcessors(), то он всегда возвращает 1, но, глядя на вывод ниже, число должно было быть больше.Чего мне здесь не хватает?

Вывод команды lscpu: -

2019-02-05T20:20:33.813+05:30 [APP/PROC/WEB/0] [OUT] Architecture: x86_64
2019-02-05T20:20:33.813+05:30 [APP/PROC/WEB/0] [OUT] CPU op-mode(s): 32-bit, 64-bit
2019-02-05T20:20:33.813+05:30 [APP/PROC/WEB/0] [OUT] Byte Order: Little Endian
2019-02-05T20:20:33.813+05:30 [APP/PROC/WEB/0] [OUT] CPU(s): 4
2019-02-05T20:20:33.813+05:30 [APP/PROC/WEB/0] [OUT] On-line CPU(s) list: 0-3
2019-02-05T20:20:33.814+05:30 [APP/PROC/WEB/0] [OUT] Thread(s) per core: 1
2019-02-05T20:20:33.814+05:30 [APP/PROC/WEB/0] [OUT] Core(s) per socket: 1
2019-02-05T20:20:33.819+05:30 [APP/PROC/WEB/0] [OUT] Socket(s): 4
2019-02-05T20:20:33.819+05:30 [APP/PROC/WEB/0] [OUT] NUMA node(s): 1
2019-02-05T20:20:33.819+05:30 [APP/PROC/WEB/0] [OUT] Vendor ID: GenuineIntel
2019-02-05T20:20:33.819+05:30 [APP/PROC/WEB/0] [OUT] CPU family: 6
2019-02-05T20:20:33.819+05:30 [APP/PROC/WEB/0] [OUT] Model: 58
2019-02-05T20:20:33.819+05:30 [APP/PROC/WEB/0] [OUT] Stepping: 0
2019-02-05T20:20:33.820+05:30 [APP/PROC/WEB/0] [OUT] CPU MHz: 2599.998
2019-02-05T20:20:33.820+05:30 [APP/PROC/WEB/0] [OUT] BogoMIPS: 5199.99
2019-02-05T20:20:33.820+05:30 [APP/PROC/WEB/0] [OUT] Hypervisor vendor: VMware
2019-02-05T20:20:33.820+05:30 [APP/PROC/WEB/0] [OUT] Virtualization type: full
2019-02-05T20:20:33.820+05:30 [APP/PROC/WEB/0] [OUT] L1d cache: 32K
2019-02-05T20:20:33.820+05:30 [APP/PROC/WEB/0] [OUT] L1i cache: 32K
2019-02-05T20:20:33.821+05:30 [APP/PROC/WEB/0] [OUT] L2 cache: 256K
2019-02-05T20:20:33.821+05:30 [APP/PROC/WEB/0] [OUT] L3 cache: 40960K

1 Ответ

0 голосов
/ 05 февраля 2019

Скорее всего, вы выполняете код Java внутри ВМ с ограниченным количеством виртуальных ЦП или в контейнере, ограниченном группами управления (cgroups), в то время как ваша команда lscpu выполняется на хост-компьютере.

Если толькоВаша JVM подвержена ошибке (например, JDK-8188310 или JDK-6515172 ), эти цифры должны быть одинаковыми.

Обратите внимание, что Java 10 улучшил ресурсуправление согласно Улучшения Java для контейнеров Docker и введенная опция -XX:ActiveProcessorCount.Javas 8, который вы используете в настоящее время, определенно не обрабатывает все крайние случаи правильно.

...