2013-10-15 3 views
0

Предположим, мне нужно читать, обрабатывать и обновлять большое количество файлов на Java. Я собираюсь использовать один компьютер с 16 ядрами. Поскольку у меня есть как IO-связанные (чтение и обновление файлов), так и задачи, связанные с CPU (обработка), я выделяю 2 пула потоков.Как выбрать размер пула потоков?

Я бы выделил один пул для задач, связанных с процессором, с 16 потоками (количество потоков = количество процессоров). Теперь я задаюсь вопросом, что такое размер пула, связанный с IO. Бассейны с нитками, какие размеры вы бы предложили?

+3

Я бы предложил тестирование. Вы не можете превзойти фактические результаты. – Kayaman

+1

Я бы сказал, что количество обрабатываемых ядер доступно ... – Thihara

+0

Я бы предложил оставить по меньшей мере 1 процессор для операционной системы, а затем провести тестирование с помощью доступных инструментов, чтобы проверить, где в этом случае аппликация бутылки в реальном аппроксимации – RamonBoza

ответ

4

Это будет зависеть от ваших возможностей хранения и того, какие типы IO вы пытаетесь сделать. Например, длинные последовательные записи на жестких дисках будут способствовать использованию одного потока ввода-вывода, но вы хотели бы масштабировать его в соответствии с вашими требованиями.

В этом ответе https://stackoverflow.com/a/2821025/2855891, BlackAura объясняет, почему эксперименты и профилирование, вероятно, единственный способ, которым вы действительно можете это узнать.

Возможно, есть очень хорошие статьи по этой теме.

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