Как ограничить использование ресурсов для экономии CPU + RAM для определенного процесса?

У меня есть dev-сервер, на котором sshd иногда перестает работать, потому что у машины заканчивается RAM. Да, мы мало работаем над памятью, и сейчас обновление невозможно. То, что я хочу сделать, – сказать машине: «Делай, что хочешь, но не оставляй 20 МБ и некоторый процессор для sshd !».

Как это можно сделать?

4 Solutions collect form web for “Как ограничить использование ресурсов для экономии CPU + RAM для определенного процесса?”

Вероятно, вы можете достичь чего-то подобного, используя группы с контроллером ресурсов памяти .

Я предполагаю, что вы поставили все свои ресурсоемкие задачи в ограниченную (CPU и RAM) cgroup и оставите sshd «снаружи», чтобы он не был ограничен.

(Однако добавление большего количества подкачки, даже в виде файла подкачки, может быть хорошим вариантом).

О, но группы легко 🙂 Установите пакет libcgroup. Создайте файл /etc/cgconfig.conf:

 mount { cpu = /cgroup/cpu_and_mem; cpuacct = /cgroup/cpu_and_mem; memory = /cgroup/cpu_and_mem; } group sshd { cpu { cpu.shares="500"; } cpuacct { cpuacct.usage="0"; } memory { memory.limit_in_bytes="1G"; } } group nosshd { cpu { cpu.shares="500"; } cpuacct { cpuacct.usage="0"; } memory { memory.limit_in_bytes="1G"; } } 

Запустите процесс cgconfig который создаст иерархию, группы и установит ограничения. Если это удастся, у вас есть две группы, каждая из которых имеет 50% назначенного CPU и 1G памяти (не знаю, каков ваш фактический объем доступной памяти, если в этом примере это 2G). Теперь вам просто нужно переместить все задачи (т.е. все процессы, запущенные в системе) из корневой группы в группу nosshd:

 cgroup]# cat tasks >> nosshd/tasks cgroup]# echo > tasks 

Тогда вам просто нужно получить PID процесса sshd и перенести его в файл задач sshd:

 cgroup]# echo $PID >> sshd/tasks 

Та-да, все готово. Теперь вы можете быть уверены, что у sshd всегда будет 50% CPU и 1G памяти.

Используйте renice для получения более высокого приоритета для sshd или проверки бухгалтерии. (acct) -> с этим вы можете установить ресурсы для пользователей, поэтому запустите sshd с s

Более общее решение проблемы использования ресурсов приложения – запуск ваших приложений в контейнере с помощью Docker . Затем вы можете запускать контейнеры с ограничениями использования ЦП и памяти, аналогичными группам.

 docker run -c=10 -m=1g my-container 
  • Каков эффект rsync -block-size на больших файлах?
  • Что такое события ядра PMU в списке perf_events?
  • Pluggin кучу жестких дисков USB в систему Linux?
  • Как я могу проверить системный охват приложений?
  • Могло ли отключить мониторинг частоты ядра процессора, чтобы повысить производительность и / или время автономной работы?
  • Можно ли сортировать сортировку?
  • Как определить, почему машина работает медленно?
  • Какая команда производит больше данных в секунду?
  • Как узнать конкуренцию
  • Как найти то, что забивает какие ресурсы?
  • Исследование раздражающего короткого пользовательского интерфейса
  • Interesting Posts

    Kernel Panic не выдает никаких файлов журнала

    Как узнать размер файла приложений Ubuntu Прежде чем загружать их на Chromebook в режиме разработчика

    Постоянно проверяйте, изменен ли файл bash

    зеркало сайта с wget, что только ответ с gzip

    Проверка пароля AIX для root из скрипта

    Не удалось выполнить аутентификацию через ssh.Centos

    Как запустить другую установленную систему из Linux?

    Какая дополнительная очистка может потребоваться после удаления вручную добавленных записей из / etc / hosts?

    Копирование файла, который записывается одновременно

    md raid5: «нет действительного суперблока», но mdadm –examine говорит, что все в порядке

    Некоторые приложения не принимают некоторые символы из ключа «Создать»

    Где в настройках Ubuntu SPI настроены?

    Как исправить btrfs?

    Надежное зеркало CDN для debian?

    Могу ли я установить тайм-аут bash только для виртуальных консолей (ctrl + alt + {f1-f6})

    Linux и Unix - лучшая ОС в мире.