2015-01-27 3 views
-1

В чем причина того, что размер пула потоков равен числу процессоров/ядер для задач с интенсивным использованием ЦП? И почему связанные задачи ввода/вывода должны иметь больший размер пула?Оптимальная конфигурация пула потоков?

+2

В чем причина оплаты в колледже, если вы собираетесь выполнять задания, сделанные толпой SO? – Dima

ответ

2

Существует корреляции между оптимальным количеством нитей к числу с ентральная р rocessing ˙U гнид, так как нить можно рассматривать как программу. Программы требуют времени выполнения. Время работы обеспечивается центральным процессором.

Производитель-потребитель-аналог будет иметь программу как потребитель и центральные процессоры в качестве производителя. Поэтому теоретически - если производитель (процессор) может обрабатывать T потребителей (потоки) и есть производители C - оптимальным количеством потребителей будет T * C.

Слишком много потоков вызовет слишком много context switch Накладные расходы, которые практически теряют время процессора для управления самими потоками. Слишком малое может привести к выполнению idle cpus, пока задачи все еще находятся в очереди.

I/O Связанные задачи взаимодействуют с медленными устройствами (именно по этой причине они называются привязкой ввода/вывода). Хотя запросы выполняются на медленном устройстве (например, на жестком диске), scheduler может иметь процессор, который запускает другие потоки вместо ожидания вывода устройства.

Аналогия для этого была бы вам (планировщиком) заказывать еду в ресторане (нить 1), а затем отправлять SMS вашему другу (нить 2). Тот факт, что вы ждёте свою пищу, не должен отказывать вам в выполнении других задач, таких как отправка SMS вашему другу.


Чтобы иметь более глубокие знания о возможных оптимизаций вы можете прочитать о affinity и scheduling.

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