Как определить общее количество дочерних потоков? - PullRequest
0 голосов
/ 26 июля 2011

Я работаю над программированием на сервере linux и не уверен, какое количество дочерних потоков для моего пула потоков.Эти потоки выполняют реальную работу, включая анализ, обработку данных и многое другое.Если мой сервер имеет 8 ядер, то какое число дочерних потоков мне следует создавать?Заранее спасибо ..

1 Ответ

1 голос
/ 26 июля 2011

Если вы задаетесь вопросом о том, сколько потоков у вас на самом деле, то man ps предоставит вам ряд опций для отображения запущенных потоков в том виде, в котором они были процессами - все, что вам нужно сделать, это подсчитать их.

Если ваш вопрос о том, сколько потоков вы должны создать, то это полностью зависит от вашего приложения и того, что делает.Если в каждом потоке нет вызовов IO и syncronouz, и все, что он делает, - это сокращение числа - тогда у вас должно быть не более 8 потоков (по одному для каждого ядра).Однако, если ваше приложение выполняет что-то, что заставляет его ждать внешнего ввода-вывода, вы можете извлечь выгоду из большего.И я говорю, что может , поскольку это полностью зависит от того, как строится ваше приложение - в большинстве случаев вам придется экспериментировать;Обычно это делается путем тестирования сначала с 8 потоками и просмотра количества запросов в секунду, которое вы можете обработать, а затем увеличения количества потоков и повторного запуска эксперимента.Затем отобразите результаты в виде кривой и найдите место, где дополнительные потоки не добавляют (или мало) дополнительного значения - и это будет число потоков, которое вы должны настроить.Это имеет смысл, если предположить, что вы не вызываете других проблем с горлышком, таких как память / обмен, которых вы бы хотели избежать

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