Сколько процессов можно запустить на одной машине?
#опытным
Симметричный вопрос относительно предыдущего поста, который затрагивает важные различия ОС.
В 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
#опытным
Симметричный вопрос относительно предыдущего поста, который затрагивает важные различия ОС.
В 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