This page describes how to enable preemptible instances. Preemptible instances typically offer lower cost computation with a tradeoff of lower service guarantees. If a compute node is preempted, Arvados will restart the computation on a new instance.
Currently Arvados supports preemptible instances using AWS and Azure spot instances.
To use preemptible instances, set UsePreemptibleInstances: true
and add entries to InstanceTypes
with Preemptible: true
to config.yml
. Typically you want to add both preemptible and non-preemptible entries for each cloud provider VM type. The Price
for preemptible instances is the maximum bid price, the actual price paid is dynamic and will likely be lower. For example:
Clusters: ClusterID: Containers: UsePreemptibleInstances: true InstanceTypes: m4.large: Preemptible: false ProviderType: m4.large VCPUs: 2 RAM: 8GiB AddedScratch: 32GB Price: 0.1 m4.large.spot: Preemptible: true ProviderType: m4.large VCPUs: 2 RAM: 8GiB AddedScratch: 32GB Price: 0.1
When UsePreemptibleInstances
is enabled, child containers (workflow steps) will automatically be made preemptible. Note that because preempting the workflow runner would cancel the entire workflow, the workflow runner runs in a reserved (non-preemptible) instance.
No additional configuration is required, arvados-dispatch-cloud will now start preemptible instances where appropriate.
Preemptible instances prices are declared at instance request time and defined by the maximum price that the user is willing to pay per hour. By default, this price is the same amount as the on-demand version of each instance type, and this setting is the one that arvados-dispatch-cloud
uses for now, as it doesn’t include any pricing data to the spot instance request.
For AWS, the real price that a spot instance has at any point in time is discovered at the end of each usage hour, depending on instance demand. For this reason, AWS provides a data feed subscription to get hourly logs, as described on Amazon’s User Guide.
For general information, see using Amazon EC2 spot instances.
When requesting spot instances, Amazon’s API may return an authorization error depending on how users and permissions are set on the account. If this is the case check logs for this error:
BaseHTTPError: AuthFailure.ServiceLinkedRoleCreationNotPermitted: The provided credentials do not have permission to create the service-linked role for EC2 Spot Instances.
The account needs to have a service linked role created. This can be done by logging into the AWS account, go to IAM Management → Roles and create the AWSServiceRoleForEC2Spot
role by clicking on the Create
button, selecting EC2
service and EC2 - Spot Instances
use case.
For general information, see Use Spot VMs in Azure.
When starting preemptible instances on Azure, Arvados configures the eviction policy to ‘delete’, with max price set to ‘-1’. This has the effect that preemptible VMs will not be evicted for pricing reasons. The price paid for the instance will be the current spot price for the VM type, up to a maximum of the price for a standard, non-spot VM of that type.
Please note that Azure provides no SLA for preemptible instances. Even in this configuration, preemptible instances can still be evicted for capacity reasons. If that happens and a container is aborted, Arvados will try to restart it, subject to the usual retry rules.
Spot pricing is not available on ‘B-series’ VMs, those should not be defined in the configuration file with the Preemptible flag set to true. Spot instances have a separate quota pool, make sure you have sufficient quota available.
The content of this documentation is licensed under the
Creative
Commons Attribution-Share Alike 3.0 United States licence.
Code samples in this documentation are licensed under the
Apache License, Version 2.0.