Отдельный cgroup на каждую сессию агента вроде Codex против свопа и брошенных процессов
Разработчик заметил, что систему загоняют в своп файлы в /tmp и процессы, брошенные агентами для кода вроде Codex. Он стал запускать каждую сессию агента в своём cgroup и добавил регулярную очистку tmp.
Что сделали
Разработчик выяснил, откуда берётся сильный своп. Первая причина в /tmp на tmpfs, который хранится в оперативной памяти. Вторая в процессах, которые прежние сессии агентов для кода запустили и бросили. Он добавил часто запускаемую задачу, которая удаляет из tmp файлы, не использовавшиеся около двух часов и не открытые ни одной командой. А свой запускатель агентов переделал так, чтобы каждая сессия стартовала в отдельном cgroup. Когда задача заканчивается, все процессы этого cgroup завершаются.
Что получилось
Замеров в источнике нет. Автор пишет, что очистка и отдельные cgroup для сессий решили проблему со свопом и оставшимися процессами. Но это короткий комментарий на форуме, цифр «до» и «после» в нём нет.
На что обратить внимание
Прежде чем винить агентов, проверьте, действительно ли своп идёт от /tmp на tmpfs в оперативной памяти. Задача очистки удаляет только файлы, которые никто не держит открытыми.
Пояснение
cgroup (control group) это механизм ядра Linux, который объединяет процессы в группу. Группе можно ограничить ресурсы и завершить все её процессы разом. tmpfs это файловая система в оперативной памяти, поэтому файлы в ней занимают RAM.
Кому пригодится
Разработчикам на Linux, которые много запускают агентов для кода и замечают, что машина тормозит и уходит в своп.
Попробуйте сами с Codex
В моём репозитории [путь] напиши небольшой скрипт запуска агентов для [дистрибутив Linux или настройка systemd], который стартует каждую сессию агента для кода в отдельном cgroup и завершает все оставшиеся процессы этого cgroup, когда задача закончилась или упала. Ещё добавь задачу по расписанию, которая удаляет устаревшие файлы старше [число] часов в [папка tmp]. В конце запусти тестовую сессию, которая оставляет фоновый процесс, и покажи, что он убран. Прежде чем удалять файлы или завершать процессы вне теста, покажи, что будет удалено, и дождись моего подтверждения.
Нужна помощь с запуском? Вступайте в сообщество AI Pack ↗
Источник: news.ycombinator.com ·