Skip to content
This repository
Fetching contributors…

Octocat-spinner-32-eaf2f5

Cannot retrieve contributors at this time

file 194 lines (157 sloc) 7.377 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193
################################################################################
#
# This file is used for configuring asynchronous requests (Spot Instances and
# backfill requests) for this site.
#
################################################################################

# NOTE: There is extra documentation on these features online, see:
# http://www.nimbusproject.org/docs/current/admin/reference.html#backfill-and-spot-instances


# SI ENABLED
#
# Indicates whether the spot instances feature is enabled (true) or disabled
# (false) for this site. This is for remote requests -- if backfill is enabled
# below, the superuser backfill reqs will be honored but any remote attempt to
# add asynchronous requests will not be honored. If you switch this from 'true'
# to 'false', it will only prevent new requests from being added.

si.enabled=false


# BACKFILL ENABLED
#
# Indicates whether the backfill feature is enabled (true) or disabled (false)
# for this site. If you switch this from 'true' to 'false', it will cause all
# currently running backfill nodes to be destroyed.

backfill.enabled=false


################################################################################
#
# Backfill settings
#
################################################################################

# The intent of backfill is to provide a Nimbus cloud with the ability to deploy
# a VM on idle nodes. Such a VM could be configured with a service like Condor,
# allowing the VM to contribute cycles to some other purpose instead of wasting
# cycles on idle cloud nodes. When a user request is received the VM is terminated
# immediately and the user VM is deployed.
#
# The VM used by backfill (and the services inside of it) must be able to handle
# a hard shutdown. A hard shutdown is used to minimize the turnaround time for
# responding to user requests.
#
# A way to think about backfill nodes is that they are spot instances with the
# very lowest priority (lower than the minimum spot bid) and only registered by
# the Nimbus administrator.

# MAX INSTANCES
#
# Max instances is the maximum number of VM instances that backfill will deploy
# if it is enabled. If there is not enough space on the cloud for the maximum #
# of instances it will deploy as many as it can. For example, if max.instances
# is set to 12 on a 16 node cloud but there are 10 active user VMs then backfill
# will still launch 6 backfill nodes. If the spot instances settings have space
# reserved for regular requests (see the 'minreservedmem' and 'maxutilization'
# confs below), these backfill requests will be subject to that as well, so the
# site will not fill up completely.
#
# If max instances is set to 0 then backfill will use all idle VMMs.
#
# The default is 0.

max.instances=0


# DISK IMAGE
#
# The disk image is the image to use in the repository of the user configured
# below (repo.user). To set the instance type, see below (async.instancetype).

disk.image=backfill.img


# USER
#
# Authorization will be bypassed for this user but it needs to exist in order
# to have a repository account for propagating "disk.image". Add this user
# with the nimbus-new-user "--dn" option (set an explicit DN) or refer to a
# pre-existing (administrator) one.

repo.user=BACKFILL-SUPERUSER


################################################################################
#
# Spot Instances settings
#
################################################################################

# INSTANCE TYPE
#
# Defines the instance type that will become available as spot instances or backfill.
# Supported instance types are: small, large and xlarge.
#
# Currently, Nimbus supports only one type of spot instance or backfill VM per
# service. The amount of memory for each instance type is defined in the
# elastic.conf file.

async.instancetype=small


# PRICING MODEL
#
# A pricing model is invoked every time the Spot Instances environment changes.
# This can happen in many situations: when a request arrives, is canceled or
# terminated, when the quantity of resources available for Spot Instances
# increases or decreases, etc.
#
# Given the actual requests, the maximum quantity of VMs for Spot Instances and
# the current spot price, a pricing model defines the next spot price based on
# this variables. Usually a spot price change causes requests to be allocated,
# if their bid is above the spot price, or pre-empted, if their bid is below
# the current spot price.
#
# This property defines which implementation of the
# org.globus.workspace.async.spotinstances.PricingModel Java interface should be
# used by the Spot Instances module to set the spot price. This class will be
# constructed by reflection, so it must be in the classpath of the Nimbus service.
#
# Currently there are two default implementations of the module, explained
# as follows:
#
# ** org.globus.workspace.async.pricingmodel.MaximizeUtilizationPricingModel **
#
# This pricing model aims to satisfy the maximum number of requests, giving
# priority to higher bid requests when there aren't available VMs to fulfill
# all requests. Suitable for scientific clouds.
#
# ** org.globus.workspace.async.pricingmodel.MaximizeProfitPricingModel **
#
# This pricing model aims to maximize the revenue of the cloud provider, without
# necessarily increasing cloud utilization. Suitable for commercial clouds.

si.pricingmodel=org.globus.workspace.async.pricingmodel.MaximizeUtilizationPricingModel


# MINIMUM PRICE
#
# Defines the minimum price (in allocation units) per minute that a Spot Instance
# can cost

si.minprice=0.1


################################################################################
#
# Memory Management Policies
#
################################################################################

# RESERVED MEMORY
#
# The policies below define how the total resource pool memory is divided between
# ordinary Workspace Service requests (1st class requests) and Asynchronous
# requests (SI or backfill requests).
#
# It's important to note that these policies are preventive, in the sense that
# free space is reserved for future 1st class requests, but if the reserved space
# is still not sufficient to satisfy a 1st class request, SI or backfill requests
# will be pre-empted on-the-fly in order to free the needed amount of space
# (emergency pre-emption).

# This policy defines the minimum amount of free memory (in MB) that should be
# reserved exclusively for 1st class requests, and thus will not be allocated for
# SI or backfill requests.

async.policies.minreservedmem=2048


# MAX UTILIZATION
#
# This policy defines the maximum utilization (in %) for 1st class requests. When
# the utilization raises above this value, Spot Instance or backfill requests are
# pre-empted (preventive pre-emption) in order to decrease the utilization of 1st
# class requests.
#
# The Workspace Service will reserve an amount of free memory for 1st class requests
# in order to ensure that the utilization of 1st class requests is equal or below
# that value, unless there is no more available memory to reserve.
#
# The amount of reserved memory for 1st class requests is derived from this formula:
#
# * maxUtilization = usedMem / (usedMem + reservedMem)
#
# Reorganized, becomes:
#
# * reservedMem = (1 - maxUtilization)*usedMem/maxUtilization

async.policies.maxutilization=0.7
Something went wrong with that request. Please try again.