detachbox
СтраницыCPU, память и диск

CPU, память и диск

Все ваши терминалы делят CPU, память и диск вашего Compute, и ничья чужая сборка их не съедает. Верхняя панель на каждой странице показывает, сколько каждого ресурса занято, а по нажатию открывает карточку: какой терминал расходует больше всех и что делать, когда ресурс закончился.

Следите за счётчиком ресурсов

В верхней панели три маленьких индикатора: CPU, память и диск. Нажмите на них, чтобы открыть карточку:

  • каждый ресурс с текущей загрузкой и динамикой за последний час, с замером каждую минуту
  • Больше всех потребляют: терминалы, которые прямо сейчас берут больше всего CPU и памяти
  • предупреждение, когда терминалы упираются в лимит CPU тарифа и ждут своей очереди, когда память почти заполнена или диск полон, а рядом кнопка Сменить размер

На странице Compute те же цифры подробнее, в блоке Ресурсы: CPU с динамикой, память, диск, процессы и сеть, с обновлением каждые 5 секунд.

Стирайте кеши

Менеджеры пакетов и инструменты сборки держат кеши в каждой домашней папке, и кеши со временем разбухают. Чтобы освободить место:

  1. Нажмите на счётчик ресурсов и выберите Стереть кеши под диском.
  2. Окно Стереть кеши пакетов и сборки? перечисляет, что уйдёт: кеши npm, pnpm, Yarn, Bun, pip, uv, Go, Cargo, Gradle и Maven, а также браузеры, которые скачал Playwright ваших проектов. Проекты, разговоры агентов и настройки остаются.
  3. Нажмите Стереть кеши.

Очистка идёт на нашей стороне, пока не будут удалены все кеши, сразу во всех домашних папках, с запущенным терминалом или без. Карточка ведёт счёт: «Освобождено уже 2,1 ГБ»; закройте её или страницу, и очистка продолжится. В конце будет видно, сколько места освободилось после удаления каждого кеша. Если очистка остановится раньше, она скажет, сколько успела освободить, а Стереть ещё раз освободит остальное.

Инструменты скачают нужное заново при следующем запуске. Сборка или установка, которая шла в этот момент, может упасть: тогда запустите её снова. Журнал записывает каждую очистку и освобождённое место.

Как считается диск

Диск вмещает ваши файлы в полном размере, как их показывает ls -l: 50 GB на Start означают 50 GB проектов и домашних папок, байт в байт.

В терминале du -sh и df без флагов считают блоки после сжатия и показывают меньше, чем занимают ваши файлы. Чтобы посчитать папку так же, как её считает тариф, добавьте --apparent-size:

du -sh --apparent-size ~/* /work/* | sort -h

~ обозначает домашнюю папку терминала, в котором вы запускаете команду: у каждого проекта своя, а у терминалов оболочки одна общая.

Когда диск заполнен

Когда файлы доходят до размера диска, новая запись останавливается. Страница Compute и счётчик показывают, что диск заполнен, а письмо сообщает об этом, не чаще раза в день. Дальше:

  • Нажмите Стереть кеши, как описано выше, или удалите ненужное. Запись возобновится, когда файлов станет на 512 MiB меньше вашего размера.
  • Или нажмите Сменить размер и возьмите диск побольше. Это срабатывает сразу, без перезапуска.

Когда кончается память

Когда терминалам вместе не хватает памяти, система останавливает самую большую программу в одном из терминалов. Если это был агент, терминал так и скажет: «Агент остановлен: этому Compute не хватило памяти». Строка терминала в списке показывает Остановлен: нет памяти.

  • Нажмите Перезапустить терминал в сообщении. Агент запустится снова на своём разговоре; домашняя папка и файлы проекта остаются.
  • Или нажмите Сменить размер, чтобы получить больше памяти.

Терминал, оставшийся без агента, сам закроется через 3 часа. Уведомление об остановке придёт, какие бы события вы ни выбрали, как объясняет раздел Уведомления.

Когда в терминале кончились процессы

В каждом терминале может работать до 32 768 процессов. Когда все они заняты, в нём ничего нового не запускается: ни команда, ни соединение кабинета. Сообщение говорит, сколько процессов занято, и, если удаётся, называет программу, которая оставила после себя неубранные зомби-процессы.

  • Нажмите Перезапустить терминал, чтобы запустить его заново в свежем контейнере с сохранением разговора, или Завершить терминал.
  • Каждый контейнер в ваших терминалах уже работает под init из Docker, который убирает зомби-процессы. Если сервис его отключает, задайте ему init: true в compose-файле, как подсказывает сообщение.

Сборки и агенты делят CPU

У Docker и всего, что в нём запущено, ниже приоритет доступа к CPU и диску, чем у шелла, tmux и агента. Долгая сборка образа или прогон тестов в контейнерах берёт свободное и не тормозит ни агента, ни ваш ввод.