Технологии

Сколько места займёт год непрерывной записи

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

Вопрос про объём задают в форме «сколько гигабайт в месяц», и в этой форме у него нет ответа. Разброс между двумя пользователями одной и той же системы — кратный: у одного восемь часов работы с текстом, у другого четыре часа с видео и включённая запись звука.

Ответ, который имеет смысл, — это формула, в которую вы подставите свои числа. Она считается за пять минут и даёт куда более полезный результат, чем чужой средний гигабайт.

#Короткий ответ

Годовой объём определяется не частотой захвата, а политикой устаревания. Система без политики растёт линейно и упирается в диск за месяцы. Система с уровнями хранения выходит на плато: старые записи теряют вес, а не накапливаются.

Разница между этими двумя режимами на горизонте года — не проценты, а порядок.

#Как это устроено: уровни хранения

Записывать всё в одном качестве вечно — самый дорогой из возможных способов. Разумная система хранит одни и те же данные в разной подробности в зависимости от возраста.

Уровень Возраст Что хранится Вес
Горячий дни изображение в полном качестве, текст, метаданные наибольший
Тёплый недели изображение в пониженном разрешении, текст, метаданные заметно меньше
Холодный месяцы текст и метаданные, изображение удалено килобайты
Сводки всегда часовые карточки и дневные сводки единицы килобайт
Удалено после срока хранения ничего ноль

Ключевой переход — из тёплого в холодный. Изображение занимает почти весь вес записи; распознанный текст и метаданные — доли процента от него. Отбросив картинку и оставив текст, вы теряете возможность посмотреть, как это выглядело, и сохраняете возможность найти, что там было написано. Для памяти, к которой обращаются поиском, это правильный размен. Устройство таких уровней разобрано в статье про иерархическую память и её уровни.

#Формула

Кадров в день     = активных часов × 3600 / интервал захвата
Записей в день    = кадры в день × (1 − доля дедупликации)
Горячий объём     = записи в день × средний вес кадра × дней в горячем
Тёплый объём      = записи в день × вес уменьшенного кадра × дней в тёплом
Холодный объём    = записи в день × вес текста и метаданных × дней хранения
Итог за год       = Горячий + Тёплый + Холодный + сводки + индексы

Три величины надо померить у себя, а не взять из статьи.

Средний вес кадра. Через неделю работы:

# Linux/macOS
du -sh ~/.persona/thumbnails
find ~/.persona/thumbnails -type f | wc -l
# Windows
$f = Get-ChildItem "$env:USERPROFILE\.persona\thumbnails" -Recurse -File
"{0} файлов, {1:N1} МБ" -f $f.Count, (($f | Measure-Object Length -Sum).Sum / 1MB)

Делите объём на количество — получаете свой средний вес кадра. Он зависит от разрешения экрана, от того, какое у вас содержимое (текст сжимается лучше графики), и от формата.

Доля дедупликации. Одинаковые и почти одинаковые кадры не дублируются, а вы значительную часть времени смотрите в один и тот же экран. Эта доля у всех разная и обычно велика. Померить её можно, сравнив число сделанных снимков с числом сохранённых записей за сутки.

Вес индексов. Полнотекстовый индекс — это не «служебная мелочь», он занимает заметную долю базы. Смотрите размер файла базы отдельно от каталога изображений и не удивляйтесь, если он окажется вдвое больше ожидаемого; про его устройство — в статье про SQLite и FTS5 на миллионах строк.

#Что из этого следует на практике

#Настройки, влияющие на объём

Настройка Как влияет
Интервал захвата прямо пропорционально: реже кадры — меньше объём
Адаптивная частота реже снимает при отсутствии активности
Порог простоя не пишет, пока вас нет за машиной
Порог дедупликации больше похожих кадров считаются одинаковыми
Запись звука добавляет отдельный, заметный поток
Исключения приложений и окон не пишет то, что писать не нужно
Понижение качества через N дней переводит записи в тёплый уровень
Удаление изображений через N дней переход в холодный — главный рычаг
Срок хранения жёсткая граница, после которой удаляется всё
Дневной бюджет объёма ориентир, по которому система себя ограничивает
Срок в корзине удалённое занимает место ещё несколько дней

Последнюю строку стоит выделить: удалённые записи какое-то время лежат в корзине и продолжают занимать место. Человек, который «всё почистил» и не увидел изменений на диске, обычно просто не дождался истечения этого срока.

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

#Порядок расчёта на год

  1. Померьте средний вес кадра за неделю.
  2. Посчитайте записи в день по своей реальной активности, а не по календарным суткам.
  3. Умножьте на глубину горячего уровня — обычно это дни или пара недель.
  4. Прибавьте тёплый уровень с его пониженным весом.
  5. Прибавьте холодный: текст и метаданные за весь срок хранения.
  6. Прибавьте индексы — берите ощутимую надбавку к базе, а не символическую.
  7. Умножьте итог на два. Не потому, что расчёт неточен, а потому что вам понадобится место под резервную копию и под временный файл журнала.

Пункт 7 забывают все. Диск, заполненный ровно под расчёт, — это диск, на котором нельзя сделать копию.

#Что происходит без политики устаревания

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

Именно поэтому политика устаревания — не «оптимизация на потом», а обязательная часть первоначальной настройки. Общий разбор того, как система вообще решает, что забыть, — в статье про стратегии забывания.

#Где интуиция подводит

«Запись экрана — это терабайты». Терабайты — это непрерывное видео. Снимки с дедупликацией и текстом — другой порядок, потому что вы значительную часть времени смотрите в неизменный экран.

«Главное — частота захвата». Она важна, но политика устаревания важнее: частота меняет наклон прямой, политика меняет саму форму кривой с прямой на плато.

«Место занимают картинки». В первый месяц — да. К концу года, если холодный уровень настроен, значительная часть объёма — это база с текстом и индексами, а не изображения.

«Удалил — освободилось». Не сразу: есть корзина со своим сроком, а файл базы после удаления строк сам по себе не уменьшается — он переиспользует освободившиеся страницы. Уплотнение — отдельная операция.

«Возьму диск побольше и не буду думать». Больший диск отодвигает дату, но не меняет линейного роста. Плюс появляется вторая проблема: резервная копия тоже становится больше, а вместе с ней — время её снятия и восстановления.

#Частые вопросы

#Сколько всё-таки гигабайт в месяц у типичного пользователя?

Честного среднего числа нет, и любое названное было бы выдумкой: разброс между пользователями кратный. Померьте свой средний вес кадра за неделю и подставьте в формулу — это займёт пять минут и даст ваше число, а не чужое. Общая оценка порядка величин по режимам работы — в статье о том, сколько это весит и тормозит ли ПК.

#Что занимает больше — изображения или звук?

Зависит от того, сколько вы говорите. Звук пишется непрерывно и не дедуплицируется, в отличие от кадров, поэтому при постоянно включённой записи он способен обогнать изображения. Расшифровки при этом почти ничего не весят.

#Можно ли хранить данные на внешнем диске?

Можно, с одной оговоркой: файл базы должен лежать на локальном диске, а не на сетевом ресурсе или в папке синхронизации — механизм блокировок SQLite там ведёт себя непредсказуемо. Изображения на внешний диск вынести проще и безопаснее.

#Что выбрать: удалять старое или понижать качество?

Понижать качество, а потом удалять только изображение, оставив текст. Это даёт основной выигрыш по объёму при минимальной потере ценности: искать по старым записям вы будете, а рассматривать их — почти никогда.

#Как это влияет на выбор арендованного сервера?

Прямо: диск — та статья, которая заканчивается первой. Считайте прогноз на год до выбора тарифа и проверяйте, можно ли увеличить диск без переезда. Требования по остальным параметрам — в статье про выбор VPS под личный ИИ-сервис.

#Что делать, если диск уже кончается?

По порядку: очистить корзину, уменьшить глубину горячего и тёплого уровней, включить удаление изображений для старых записей, уплотнить базу. Уменьшать частоту захвата стоит в последнюю очередь — она влияет на то, что вы запишете завтра, а не на то, что уже занято сегодня. Куда встроить проверку свободного места, чтобы этот вопрос не заставал врасплох, — в статье о том, как поднять свой ИИ-сервис.

Хотите ИИ, который помнит вас?

Persona держит контекст между чатами и работает на вашем железе — если развернуть её у себя и подключить локальную модель.

Создать аккаунт