# Как проверить сон llama.cpp server после простоя

Источник: https://modelium.tech/zhurnal/llama-cpp-sleep-idle/

Флаг --sleep-idle-seconds задаёт время простоя, после которого llama.cpp server выгружает модель из памяти. Состояние проверяется полем is_sleeping в GET /props; затем нужен реальный запрос к модели, чтобы проверить пробуждение. Это инструкция по закреплённым исходникам, а не результат нашего запуска; есть открытый отчёт о зависании запроса ровно в момент засыпания.

Если модель в llama.cpp server занимает память даже тогда, когда вы не отправляете запросы, можно включить **сон после простоя**: сервер выгрузит модель, а следующий рабочий запрос попытается загрузить её снова. Ниже — способ проверить оба перехода, не принимая ответ `/health` за доказательство того, что модель ещё в памяти. Инструкция **инженерного уровня** для Linux: нужна командная строка и уже работающий llama.cpp с совместимым локальным GGUF-файлом (файлом с весами модели). [s1](#src-s1) [s2](#src-s2)

**Статус проверки:** действия сверены с исходниками llama.cpp на коммите `a0e6dc7` от 14 октября 2026 года. Редакция не запускала сервер или модель и не измеряла реальную экономию памяти. У upstream открыт отчёт о возможном зависании запроса, попавшего точно на границу засыпания; не включайте этот режим в критичном сервисе без собственного нагрузочного теста. [s1](#src-s1) [s2](#src-s2) [s4](#src-s4)

## Что нужно до запуска?

У вас уже должен быть совместимый GGUF-файл и собранный `llama-server`. Если ещё нет, начните с [инструкции по llama.cpp](/zhurnal/llama-cpp/). Размер GGUF сам по себе не задаёт минимальную оперативную или видеопамять: проверяйте требования своей модели на своём компьютере. Для получения программы и весов нужна сеть; описанный ниже запрос идёт на `127.0.0.1`, но полную офлайн-работу своего ПК нужно проверять отдельно. [s1](#src-s1)

При необходимости сервер собирается из закреплённых исходников в корне репозитория командами `cmake -B build` и `cmake --build build --config Release -t llama-server`. Результат сборки в документации — `./build/bin/llama-server`; это **путь из инструкции**, не протокол нашей сборки. [s1](#src-s1)

## Как включить сон и увидеть выгрузку?

Остановите прежний экземпляр сервера, затем в первом терминале Linux запустите `./build/bin/llama-server -m /путь/к/модели.gguf --host 127.0.0.1 --port 8080 --sleep-idle-seconds 60`. Замените путь на существующий файл. Адрес оставлен только для этого компьютера; не открывайте порт наружу ради теста. Флаг принимает положительное число секунд, `-1` означает отключённый сон, а `0` отвергается. Дождитесь загрузки модели, прежде чем обращаться к API. [s1](#src-s1) [s3](#src-s3)

Во втором терминале выполните `curl --fail-with-body -sS http://127.0.0.1:8080/props`. В JSON найдите `"is_sleeping": false` — модель пока активна. Затем не отправляйте **рабочих** запросов дольше минуты: после запуска `sleep 70` снова выполните `curl --fail-with-body -sS http://127.0.0.1:8080/props`. Ожидаемое значение — `"is_sleeping": true`. Запросы GET `/props`, `/health`, `/models` и `/metrics` не сбрасывают таймер и сами по себе модель не будят. Если `true` не появилось, проверьте параметр запуска, время ожидания и другие клиенты, которые могут посылать запросы; не выдавайте один ответ `/health` за измерение памяти. [s1](#src-s1) [s2](#src-s2)

## Как проверить пробуждение и возможное зависание?

На том же компьютере отправьте **один** учебный запрос с ограничением ожидания: `curl --max-time 180 --fail-with-body -sS http://127.0.0.1:8080/completion -H 'Content-Type: application/json' -d '{"prompt":"Ответь коротко: какого цвета небо при ясной погоде?","n_predict":24,"stream":false}'`. При исправной работе ожидается JSON с полем `content`, а следующий `GET /props` должен показать `"is_sleeping": false`. Сверьте смысл ответа сами: пример не гарантирует точного слова и **не является результатом генерации Modelium**. Первое обращение после сна может потребовать повторной загрузки модели, поэтому измеряйте реальную задержку на своём файле. [s1](#src-s1) [s2](#src-s2)

Если `curl` истёк по времени или ответ не появился, не повторяйте запрос бездумно в важном сервисе. Сохраните ревизию llama.cpp, флаг, время ожидания, лог сервера и состояние `/props`, затем сравните симптомы с [отчётом upstream](https://github.com/ggml-org/llama.cpp/issues/29689). Автор issue #29689 описал гонку при запросе на самой границе сна с таймером 1 секунда; это свидетельство автора, а не воспроизведённый редакцией дефект на закреплённой ревизии. Увеличение таймера не доказывает устранения гонки. Если повторяемость или время первого ответа неприемлемы, остановите тестовый сервер и перезапустите его без флага либо с `--sleep-idle-seconds -1` (режим сна по умолчанию выключен). [s1](#src-s1) [s3](#src-s3) [s4](#src-s4)

**Следующий шаг:** [подготовьте свой GGUF и рабочий сервер](/zhurnal/llama-cpp/), затем зафиксируйте наблюдаемые `is_sleeping`, время первого ответа и ошибку тайм-аута, если она произошла. В этом материале нет обещания гарантированной экономии памяти или непрерывной доступности. [s1](#src-s1) [s4](#src-s4)

## Источники

1. [llama.cpp — server README: Sleeping on Idle и endpoints](https://github.com/ggml-org/llama.cpp/blob/a0e6dc7384edb8f5d927155e1d26c10b4a310e6d/tools/server/README.md) — получено 2026-10-15
2. [llama.cpp — исходник состояния сервера](https://github.com/ggml-org/llama.cpp/blob/a0e6dc7384edb8f5d927155e1d26c10b4a310e6d/tools/server/server-context.cpp) — получено 2026-10-15
3. [llama.cpp — аргумент sleep-idle-seconds в common/arg.cpp](https://github.com/ggml-org/llama.cpp/blob/a0e6dc7384edb8f5d927155e1d26c10b4a310e6d/common/arg.cpp) — получено 2026-10-15
4. [llama.cpp issue #29689 — отчёт пользователя о гонке при засыпании](https://github.com/ggml-org/llama.cpp/issues/29689) — получено 2026-10-15
