[ARVADOS] created: 1.3.0-1809-g6bec4e92e

Git user git at public.curoverse.com
Tue Oct 29 19:36:42 UTC 2019


        at  6bec4e92eb3362fb0dabba0d642c33c97cc3742e (commit)


commit 6bec4e92eb3362fb0dabba0d642c33c97cc3742e
Author: Peter Amstutz <pamstutz at veritasgenetics.com>
Date:   Tue Oct 29 15:35:59 2019 -0400

    15660: Update documentation about using preemptible instances with c-d-c
    
    Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <pamstutz at veritasgenetics.com>

diff --git a/doc/admin/spot-instances.html.textile.liquid b/doc/admin/spot-instances.html.textile.liquid
index 1c61b6074..67a75ce61 100644
--- a/doc/admin/spot-instances.html.textile.liquid
+++ b/doc/admin/spot-instances.html.textile.liquid
@@ -10,60 +10,43 @@ Copyright (C) The Arvados Authors. All rights reserved.
 SPDX-License-Identifier: CC-BY-SA-3.0
 {% endcomment %}
 
-This page describes how to set up the system to take advantage of "Amazon's EC2 spot instances":https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-spot-instances.html.
+This page describes how to set up crunch to take advantage of "Amazon's EC2 spot instances":https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-spot-instances.html.
 
-h3. Nodemanager
+h2. Configuration
 
-Nodemanager should have configured cloud sizes that include the @preemptible@ boolean parameter. For example, for every on-demand cloud node size, you could create a @.spot@ variant, like this:
-
-<pre>
-[Size m4.large]
-cores = 2
-scratch = 32000
-
-[Size m4.large.spot]
-cores = 2
-instance_type = m4.large
-preemptible = true
-scratch = 32000
-</pre>
-
-h3. Slurm dispatcher
-
-The @crunch-dispatch-slurm@ service needs a matching instance type configuration on @/etc/arvados/config.yml@, following the previous example:
+To use spot instances, set @UsePreemptibleInstances: true@ and add entries to @InstanceTypes@ with @Preemptible: true at .  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 may be lower.  For example:
 
 <pre>
 Clusters:
   uuid_prefix:
+    Containers:
+      UsePreemptibleInstances: true
     InstanceTypes:
-    - Name: m4.large
-      VCPUs: 2
-      RAM: 7782000000
-      Scratch: 32000000000
-      Price: 0.1
-    - Name: m4.large.spot
-      Preemptible: true
-      VCPUs: 2
-      RAM: 7782000000
-      Scratch: 32000000000
-      Price: 0.1
+      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
 </pre>
 
- at InstanceType@ names should match those defined on nodemanager's config file because it's @crunch-dispatch-slurm@'s job to select the instance type and communicate the decision to @nodemanager@ via Slurm.
-
-h3. API Server
-
-Container requests will need the @preemptible@ scheduling parameter included, to make the dispatcher request a spot instance. The API Server configuration file includes an option that when active, will auto assign the @preemptible@ parameter to any new child container request if it doesn't have it already. To activate this feature, the following should be added to the @application.yml@ file:
+When @UsePreemptibleInstances@ is enabled, child containers (workflow steps) will automatically be made preemptable.  If the instance running a step is preempted, it will be restarted on a new instance.  However, because preempting the workflow runner would cancel the entire workflow, the workflow runner runs in a reserved (nonpreemptable) instance.
 
-<pre>
-preemptible_instances: true
-</pre>
+If you are using "crunch-dispatch-cloud":{{site.baseurl}}/install/install-dispatch-cloud.html no additional configuration is required.
 
-With this configuration active, child container requests should include the @preemptible = false@ parameter at creation time to avoid being scheduled for spot instance usage.
+If you are using the legacy Nodemanager, "see below":#nodemanager .
 
 h3. AWS Permissions
 
-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 nodemanager's log for:
+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:
 
 <pre>
 BaseHTTPError: AuthFailure.ServiceLinkedRoleCreationNotPermitted: The provided credentials do not have permission to create the service-linked role for EC2 Spot Instances.
@@ -75,4 +58,20 @@ h3. Cost Tracking
 
 Amazon's Spot 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 nodemanager uses for now, as it doesn't include any pricing data to the spot instance request.
 
-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":https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-data-feeds.html.
\ No newline at end of file
+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":https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-data-feeds.html.
+
+h2(#nodemanager). Nodemanager
+
+If you are using the legacy Nodemanager, its config file must also declare preemptible instance sizes, which must match the API server's @InstanceTypes@:
+
+<pre>
+[Size m4.large]
+cores = 2
+scratch = 32000
+
+[Size m4.large.spot]
+cores = 2
+instance_type = m4.large
+preemptible = true
+scratch = 32000
+</pre>

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list