Для вычислительных задач, в которых нет ввода-вывода и нет доступа к общим данным, потоки Ncpu + 1 обеспечивают оптимальную пропускную способность? - PullRequest
0 голосов
/ 27 октября 2018

Java-параллелизм на практике:

Для таких вычислительных задач, которые не требуют ввода-вывода и доступа к общим данным, потоки Ncpu или Ncpu + 1 обеспечивают оптимальную пропускную способность; большее количество потоков не помогает и может фактически снизить производительность, поскольку потоки конкурируют за ресурсы процессора и памяти.

Я никогда не видел эту рекомендацию Ncpu + 1, это всегда Ncpu. Почему Ncpu + 1 также оптимален?

1 Ответ

0 голосов
/ 01 ноября 2018

Ответ представлен несколькими главами позже:

Даже потоки, требующие большого объема вычислений, иногда по какой-либо причине вызывают ошибку страницы или делают паузу, поэтому «дополнительный» выполняемый поток предотвращает запуск циклов ЦП.не используется, когда это происходит.

Во всяком случае, не очень приятно объяснить представленную концепцию примерно через 100 страниц.

...