2013-04-25 2 views
1

При запуске многопоточного приложения необходимо ли явно указывать максимальное количество потоков, используемых для приложения, или Linux будет управлять им самостоятельно? Если Linux обрабатывает его сам по себе, я ожидаю, что он будет «социальным», в том смысле, что центральный процессор будет разделен между всеми пользователями. Но, может быть, я ошибаюсь в этом?необходимо явно ограничить число потоков

ответ

4

Некоторые системы имеют максимальное количество потоков, с которыми может справиться система, но большинство систем просто заканчивается из памяти [до этого].

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

Таким образом, это действительно не то, что установлено в камне, но зависит от того, чего вы пытаетесь достичь. И, конечно, для чего предназначена общая система - если ваша задача состоит в моделировании аэродинамики нового автомобиля для BMW, то использование 99,999% CPU для расчета аэродинамики вполне нормально. Если машина является выделенным веб-сервером, использование 99,99% центрального процессора для обслуживания веб-страниц также является правдоподобным. Если это компьютер для настольных компьютеров, который они используют для просмотра в Интернете, для написания электронных писем и компиляции кода, то использование 99,99% доступного процессора для преобразования Фурье их музыкальной коллекции для проверки дублирующих песен, вероятно, не является идеальным решением.

+1

Фактически для использования ЦП обычно это нормально. То, что я нахожу в моей машине, - это чрезмерное использование памяти [хотя это только «однопользовательская» машина, я часто запускаю несколько приложений одновременно, например, некоторые длительные вычисления и сеанс компиляции и просмотра веб-страниц одновременно ]. Когда я запускаю что-то, использующее много оперативной памяти, я получаю «невосприимчивую» систему. Но в итоге система будет (пытаться) распределить доступные ресурсы между пользователями. –

1

Сама программа определяет, сколько потоков она запускает, а не ОС. Что касается того, что происходит, когда процесс запускает слишком много потоков, это до scheduler.

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