Ограничение потребления ресурсов процессов в Unix: различия между версиями
Vix (обсуждение | вклад) |
Vix (обсуждение | вклад) Нет описания правки |
||
Строка 1: | Строка 1: | ||
'''1. Обзор''' | |||
Запуск нескольких процессов в наших системах Linux требует от них совместного использования ресурсов, таких как центральный процессор, оперативная память и дисковое пространство. Чтобы избежать зависания ресурсоемких процессов, приводящих к зависанию системы, мы можем пожелать ограничить ресурсы, потребляемые другими процессами. В этом руководстве мы узнаем, как добавить ограничения в отношении процессора, оперативной памяти и дискового пространства. Мы будем использовать такие команды, как '''ulimit, cgroups, systemd-run, ionice,''' и '''nice'''. В некоторых случаях для выполнения этих команд потребуются разрешения суперпользователя. | Запуск нескольких процессов в наших системах Linux требует от них совместного использования ресурсов, таких как центральный процессор, оперативная память и дисковое пространство. Чтобы избежать зависания ресурсоемких процессов, приводящих к зависанию системы, мы можем пожелать ограничить ресурсы, потребляемые другими процессами. В этом руководстве мы узнаем, как добавить ограничения в отношении процессора, оперативной памяти и дискового пространства. Мы будем использовать такие команды, как '''ulimit, cgroups, systemd-run, ionice,''' и '''nice'''. В некоторых случаях для выполнения этих команд потребуются разрешения суперпользователя. | ||
'''2. Использование systemd-run''' | |||
'''systemd-run''' - это системный менеджер и менеджер служб, доступный напрямую в большинстве дистрибутивов Linux. Он занимается запуском процессов, служб и демонов. Этот инструмент позволяет нам добавлять ограничения непосредственно к конкретному процессу, который мы хотим запустить. | '''systemd-run''' - это системный менеджер и менеджер служб, доступный напрямую в большинстве дистрибутивов Linux. Он занимается запуском процессов, служб и демонов. Этот инструмент позволяет нам добавлять ограничения непосредственно к конкретному процессу, который мы хотим запустить. | ||
* Например, мы можем запустить процесс с ограничением в 1 ГБ оперативной памяти: | * Например, мы можем запустить процесс с ограничением в 1 ГБ оперативной памяти: | ||
Строка 14: | Строка 14: | ||
systemd-run --scope -p MemoryLimit=1000M -p CPUQuota=10% ./myProcess.sh | systemd-run --scope -p MemoryLimit=1000M -p CPUQuota=10% ./myProcess.sh | ||
'''3. Использование ulimit''' | |||
'''ulimit''' позволяет нам перезаписывать или создавать ограничения на оперативную память и дисковое пространство. Это встроенная функция оболочки '''bash'''. | '''ulimit''' позволяет нам перезаписывать или создавать ограничения на оперативную память и дисковое пространство. Это встроенная функция оболочки '''bash'''. | ||
'''3.1 Жесткие и мягкие ограничения''' | |||
Для всех пользователей в системе существует жесткое ограничение, устанавливаемое администратором. Затем существует мягкое ограничение, которое каждый пользователь может установить самостоятельно. Эти ограничения остаются в силе до тех пор, пока их не изменят. | Для всех пользователей в системе существует жесткое ограничение, устанавливаемое администратором. Затем существует мягкое ограничение, которое каждый пользователь может установить самостоятельно. Эти ограничения остаются в силе до тех пор, пока их не изменят. | ||
Давайте установим мягкое ограничение в 1 ГБ оперативной памяти для нашего текущего пользователя: | Давайте установим мягкое ограничение в 1 ГБ оперативной памяти для нашего текущего пользователя: |
Версия от 17:31, 7 февраля 2025
1. Обзор Запуск нескольких процессов в наших системах Linux требует от них совместного использования ресурсов, таких как центральный процессор, оперативная память и дисковое пространство. Чтобы избежать зависания ресурсоемких процессов, приводящих к зависанию системы, мы можем пожелать ограничить ресурсы, потребляемые другими процессами. В этом руководстве мы узнаем, как добавить ограничения в отношении процессора, оперативной памяти и дискового пространства. Мы будем использовать такие команды, как ulimit, cgroups, systemd-run, ionice, и nice. В некоторых случаях для выполнения этих команд потребуются разрешения суперпользователя.
2. Использование systemd-run systemd-run - это системный менеджер и менеджер служб, доступный напрямую в большинстве дистрибутивов Linux. Он занимается запуском процессов, служб и демонов. Этот инструмент позволяет нам добавлять ограничения непосредственно к конкретному процессу, который мы хотим запустить.
- Например, мы можем запустить процесс с ограничением в 1 ГБ оперативной памяти:
systemd-run --scope -p MemoryLimit=1000M ./myProcess.sh
Здесь, myProcess.sh был запущен с помощью systemd-run и может обращаться только к указанной оперативной памяти.
- Мы также можем использовать это, чтобы заставить процесс использовать только максимальный процент процессора:
systemd-run --scope -p CPUQuota=10% ./myProcess.sh
- systemd-run позволяет нам сочетать ограничение как процессора, так и памяти:
systemd-run --scope -p MemoryLimit=1000M -p CPUQuota=10% ./myProcess.sh
3. Использование ulimit ulimit позволяет нам перезаписывать или создавать ограничения на оперативную память и дисковое пространство. Это встроенная функция оболочки bash.
3.1 Жесткие и мягкие ограничения Для всех пользователей в системе существует жесткое ограничение, устанавливаемое администратором. Затем существует мягкое ограничение, которое каждый пользователь может установить самостоятельно. Эти ограничения остаются в силе до тех пор, пока их не изменят.
Давайте установим мягкое ограничение в 1 ГБ оперативной памяти для нашего текущего пользователя: