[Документация Yandex Cloud](../../index.md) > [Yandex Compute Cloud](../index.md) > [Концепции](index.md) > Виртуальные машины > Прерываемые виртуальные машины

# Прерываемые виртуальные машины

*Прерываемые виртуальные машины* — это виртуальные машины, которые могут быть принудительно остановлены в любой момент. Это может произойти в двух случаях:
* Если с момента запуска виртуальной машины прошло 24 часа.
* Если возникнет нехватка ресурсов для запуска обычной виртуальной машины в той же [зоне доступности](../../overview/concepts/geo-scope.md). Вероятность такого события низкая, но может меняться изо дня в день.

Прерываемые виртуальные машины доступны по [более низкой цене](../pricing.md#prices-instance-resources) в сравнении с обычными, однако не обеспечивают отказоустойчивости.

Вы можете [создать](../operations/vm-create/create-preemptible-vm.md#create-preemptible) прерываемую ВМ или [сменить тип](../operations/vm-create/create-preemptible-vm.md#preemptible-to-regular) существующей.

Тарификация виртуальной машины после этого изменится. Подробнее о [правилах тарификации](../pricing.md).

## Ограничения {#restrictions}

Помимо того, что прерываемые виртуальные машины могут быть принудительно остановлены, они имеют следующие ограничения:

* Если в указанной зоне доступности недостаточно ресурсов для запуска прерываемой виртуальной машины, она не будет запущена.
* Для прерываемых машин не действует [соглашение об уровне обслуживания (SLA)](../../overview/sla.md).

## Как работать с прерываемыми ВМ {#work-with-preemptible-vm}

После остановки виртуальная машина не удаляется, все ее данные сохраняются. Когда виртуальная машина снова понадобится, повторно [запустите ее](../operations/vm-control/vm-stop-and-start.md#start).

С помощью функции [Yandex Cloud Functions](../../functions/index.md) вы можете [настроить](../tutorials/nodejs-cron-restart-vm.md) автоматический запуск остановленной прерываемой ВМ.

{% note info %}

В [Instance Groups](instance-groups/index.md) остановленные виртуальные машины запускаются сами благодаря [автоматическому восстановлению](instance-groups/autohealing.md).

Instance Groups останавливает прерываемые ВМ в группе не ровно через 24 часа, а через случайный момент времени — от 22 до 24 часов. Это позволяет исключить ситуацию, когда все ВМ в группе перезапустятся одновременно и перестанут обслуживать нагрузку запущенных приложений.

{% endnote %}

## Особенности работы прерываемых ВМ {#features}

### Остановка ВМ {#vm-stop}

Чтобы остановить ВМ, Compute Cloud отправляет в нее сигнал о штатном выключении [ACPI shutdown](https://ru.wikipedia.org/wiki/ACPI). В гостевой ОС запускается период ожидания в 30 секунд, в течение которого процессы должны завершиться, после чего ВМ отключается.

В ОС Linux сигнал `ACPI shutdown` обычно обрабатывается подсистемой инициализации и управления службами [systemd](https://ru.wikipedia.org/wiki/Systemd). После получения этого сигнала `systemd` отправляет запущенным процессам сигнал [SIGTERM](https://ru.wikipedia.org/wiki/SIGTERM) для штатного завершения работы. Если процесс не завершается, по истечении заданного таймаута `systemd` принудительно останавливает его сигналом [SIGKILL](https://ru.wikipedia.org/wiki/SIGKILL).

{% note tip %}

По умолчанию таймаут ожидания завершения процессов в `systemd` составляет 90 секунд. Поэтому, чтобы гарантировать завершение процессов в пределах отведенных Compute Cloud 30 секунд, рекомендуется в конфигурационном файле [/etc/systemd/system.conf](https://www.freedesktop.org/software/systemd/man/systemd-system.conf.html) выставить значение параметра `DefaultTimeoutStopSec=30s`.

{% endnote %}

### Срок жизни ВМ {#term-life}

Срок жизни прерываемых ВМ регулируется динамически в зависимости от уровня загруженности вычислительных ресурсов Yandex Cloud.

Максимальный срок жизни прерываемых ВМ — 24 часа.

Минимальный срок жизни прерываемых ВМ не ограничен. В том числе прерываемые ВМ могут не создаваться вовсе (ошибка `not enough resources`), если в [зоне доступности](../../overview/concepts/geo-scope.md) закончились доступные конфигурации. В этом случае вы можете:
* Попробовать запустить прерываемую ВМ в другой зоне доступности.
* Изменить конфигурацию прерываемой ВМ. Например, если для ваших задач недоступна ВМ с 8 GPU, попробуйте создать 4 ВМ с 2 GPU в каждой — их наличие для прерываемых ВМ более вероятно.
* Использовать непрерываемую ВМ.

### Устойчивость приложений к сбоям {#resilience-to-failures}

Если вы используете прерываемые ВМ для пакетной обработки данных ([batch processing](https://en.wikipedia.org/wiki/Batch_processing)), ваше приложение должно уметь восстанавливать свою работу в случае отказа любого из вычислительных узлов. Например, если вы ожидаете, что расчет вашей задачи займет 10 часов, есть вероятность, что за этот период прерываемая ВМ будет остановлена. Ваше приложение должно иметь возможность возобновить расчет с момента, в котором ВМ была остановлена.

{% note tip %}

Чтобы корректно восстановить работу приложения после остановки ВМ, сохраняйте промежуточные результаты расчетов в [Yandex Object Storage](../../storage/tools/geesefs.md) или [файловое хранилище](filesystem.md).

{% endnote %}

## Сценарии использования прерываемых ВМ {#scenarios-for-using}

Прерываемые ВМ подходят для решения задач со stateless-нагрузкой, устойчивых к отказам и гибких к конфигурации ВМ. Например:
* Обработка больших объемов данных.
* Сборка артефактов, ПО или контейнеров.
* Выполнение CI/CD-процессов.
* Высокопроизводительные вычисления ([HPC](https://en.wikipedia.org/wiki/High-performance_computing)), устойчивые к отказам.
* Рендеринг графики.
* Обучение [моделей машинного обучения](../../glossary/ml-models.md), требующее менее 24 часов.

## Примеры использования {#examples}

* [Развертывание отказоустойчивой архитектуры с прерываемыми виртуальными машинами](../tutorials/nodejs-cron-restart-vm.md)
* [Высокопроизводительные вычисления (HPC) на прерываемых виртуальных машинах](../tutorials/hpc-on-preemptible.md)