Сколько процессов можно запустить на одной машине?
#опытным
Симметричный вопрос относительно предыдущего поста, который затрагивает важные различия ОС.
В windows довольно простой ответ.
Жестких лимитов на количество процессов нет. Разве что PID - это 32-битное число, поэтому больше физически создать нельзя.
На практике вы намного раньше упретесь в ограничения ресурсов самой машины и в основном памяти. Каждый процесс требует какого-то количества данных для обеспечения управления им. Плюс у процесса есть как минимум один главный поток и ему нужен свой стек.
С линукс чуть интереснее. В его ядре вообще нет процессов per se. Есть
задачи.
Ядро Linux имеет параметр
kernel.pid_max, который определяет максимально возможный идентификатор задачи. Исторически значение по умолчанию было 65535, но в современных ядрах оно может быть значительно выше — до нескольких миллионов.
Плюс для каждого пользователя действует ограничение
nproc(number of processes). Его можно посмотреть командой
ulimit -u:
👉🏿 По умолчанию это значение часто составляет 1024
👉🏿 Ограничение бывает "мягким" (soft) и "жестким" (hard). Пользователь может увеличить мягкий лимит, но не выше жесткого.
👉🏿 Эти лимиты настраиваются в файлах
/etc/security/limits.conf или
/etc/security/limits.d/.
Допустим, у вас лимит в 100 задач. Вы можете запустить 50 процессов, в каждом из которых по 1 потоку. Или 1 процесс и 99 потоков внутри него. Главное, чтобы сумма не превысила 100.
Ну и рассуждения про ограничения ресурсов машины здесь тоже имеют место быть.
Scale up. Stay cool.
#concurrency #OS
Обсуждение 0
Обсуждение не доступно в веб-версии. Чтобы написать комментарий, перейдите в приложение Telegram.
Обсудить в Telegram