Как прогнозировать заполнение диска и когда этого не стоит делать
Линейной регрессии по занятости диска хватает, чтобы поймать большинство проблем с местом за недели - при условии честности насчёт случаев, где она бессмысленна.
Опубликовано 2026-05-08
Забитый диск - один из немногих отказов, который объявляет о себе за недели и всё равно застаёт людей врасплох. Данные лежат прямо здесь, просто на них никто не смотрит. Поэтому мы проводим по ним прямую и оповещаем по точке пересечения.
Почему линейной регрессии достаточно
Есть соблазн взять что-нибудь посложнее. Не поддавайтесь. Подавляющее большинство кривых заполнения диска скучно линейны: логи копятся с постоянной скоростью, база растёт вместе со стабильной клиентской базой, бэкапы приезжают по расписанию. Метод наименьших квадратов по паре недель отсчётов предсказывает дату пересечения достаточно точно, чтобы действовать, и - что важнее - он объясним. Когда система говорит *этот том заполнится за 11 дней*, вы видите прямую.
Сложные модели ошибаются иначе: они правы чаще и ошибаются так, что в три часа ночи это никто не отладит. Для сигнала, вся работа которого - дать вам две недели форы, это плохой размен.
Когда прогноз бессмыслен
Знать, когда промолчать, - здесь бо́льшая часть работы. Мы подавляем прогноз, если:
- наклон отрицательный или нулевой - том не заполняется, и дата не является информацией;
- качество приближения низкое, потому что ряд пилообразный, а не трендовый: у тома, который заполняется и раз в неделю обрезается ротацией логов, даты пересечения нет;
- предсказанная дата дальше окна, по которому строилось приближение, - там экстраполяция говорит больше о приближении, чем о диске;
- том крошечный, и одна установка пакета сдвигает прямую на недели.
Для памяти работает та же схема
Прогноз по памяти использует то же приближение с одной разницей в трактовке: устойчивый рост занятой памяти, который никогда не сбрасывается, - это обычно утечка, а не рост, и полезное оповещение здесь про сам факт наличия наклона, а не про дату достижения потолка.
Оба прогноза считаются на панели по сохранённым отсчётам, поэтому наблюдаемому хосту не стоят ничего.