Author: dlester Date: Thu Sep 24 05:36:06 2015 New Revision: 1704991 URL: http://svn.apache.org/viewvc?rev=1704991&view=rev Log: Update Aurora documentation on website.
Added: aurora/site/publish/documentation/latest/resources/ aurora/site/publish/documentation/latest/resources/index.html aurora/site/source/documentation/latest/resources.md Removed: aurora/site/publish/documentation/latest/resource-isolation/ aurora/site/source/documentation/latest/resource-isolation.md Modified: aurora/site/publish/documentation/latest/client-commands/index.html aurora/site/publish/documentation/latest/configuration-reference/index.html aurora/site/publish/documentation/latest/configuration-tutorial/index.html aurora/site/publish/documentation/latest/deploying-aurora-scheduler/index.html aurora/site/publish/documentation/latest/index.html aurora/site/publish/documentation/latest/tutorial/index.html aurora/site/publish/sitemap.xml aurora/site/source/documentation/latest.html.md aurora/site/source/documentation/latest/client-commands.md aurora/site/source/documentation/latest/configuration-reference.md aurora/site/source/documentation/latest/configuration-tutorial.md aurora/site/source/documentation/latest/deploying-aurora-scheduler.md aurora/site/source/documentation/latest/tutorial.md Modified: aurora/site/publish/documentation/latest/client-commands/index.html URL: http://svn.apache.org/viewvc/aurora/site/publish/documentation/latest/client-commands/index.html?rev=1704991&r1=1704990&r2=1704991&view=diff ============================================================================== --- aurora/site/publish/documentation/latest/client-commands/index.html (original) +++ aurora/site/publish/documentation/latest/client-commands/index.html Thu Sep 24 05:36:06 2015 @@ -360,7 +360,8 @@ configuration file, and displays the par <pre class="highlight text">aurora quota get CLUSTER/ROLE </pre> <p>Prints the production quota allocated to the role’s value at the given -cluster.</p> +cluster. Only non-<a href="deploying-aurora-scheduler.md#dedicated-attribute">dedicated</a> +<a href="configuration-reference.md#job-objects">production</a> jobs consume quota.</p> <h3 id="finding-a-job-on-web-ui">Finding a Job on Web UI</h3> Modified: aurora/site/publish/documentation/latest/configuration-reference/index.html URL: http://svn.apache.org/viewvc/aurora/site/publish/documentation/latest/configuration-reference/index.html?rev=1704991&r1=1704990&r2=1704991&view=diff ============================================================================== --- aurora/site/publish/documentation/latest/configuration-reference/index.html (original) +++ aurora/site/publish/documentation/latest/configuration-reference/index.html Thu Sep 24 05:36:06 2015 @@ -81,6 +81,7 @@ <ul> <li><a href="#job-objects">Job Objects</a></li> <li><a href="#services">Services</a></li> +<li><a href="#revocable-jobs">Revocable Jobs</a></li> <li><a href="#updateconfig-objects">UpdateConfig Objects</a></li> <li><a href="#healthcheckconfig-objects">HealthCheckConfig Objects</a></li> <li><a href="#announcer-objects">Announcer Objects</a></li> @@ -429,7 +430,7 @@ ordering constraints.</p> <h3 id="resource-object">Resource Object</h3> <p>Specifies the amount of CPU, Ram, and disk resources the task needs. See the -<a href="/documentation/latest/resource-isolation/">Resource Isolation document</a> for suggested values and to understand how +<a href="/documentation/latest/resources/">Resource Isolation document</a> for suggested values and to understand how resources are allocated.</p> <table><thead> @@ -540,7 +541,7 @@ resources are allocated.</p> <tr> <td><code>production</code></td> <td style="text-align: center">Boolean</td> -<td>Whether or not this is a production task backed by quota (Default: False). Production jobs may preempt any non-production job, and may only be preempted by production jobs in the same role and of higher priority. To run jobs at this level, the job role must have the appropriate quota. To grant quota to a particular role in production, operators use the <code>aurora_admin set_quota</code> command.</td> +<td>Whether or not this is a production task that may <a href="resources.md#task-preemption">preempt</a> other tasks (Default: False). Production job role must have the appropriate <a href="resources.md#resource-quota">quota</a>.</td> </tr> <tr> <td><code>health_check_config</code></td> @@ -557,6 +558,11 @@ resources are allocated.</p> <td style="text-align: center"><code>LifecycleConfig</code> object</td> <td>An optional task lifecycle configuration that dictates commands to be executed on startup/teardown. HTTP lifecycle is enabled by default if the “health” port is requested. See <a href="#lifecycleconfig-objects">LifecycleConfig Objects</a> for more information.</td> </tr> +<tr> +<td><code>tier</code></td> +<td style="text-align: center">String</td> +<td>Task tier type. When set to <code>revocable</code> requires the task to run with Mesos revocable resources. This is work <a href="https://issues.apache.org/jira/browse/AURORA-1343">in progress</a> and is currently only supported for the revocable tasks. The ultimate goal is to simplify task configuration by hiding various configuration knobs behind a task tier definition. See AURORA-1343 and AURORA-1443 for more details.</td> +</tr> </tbody></table> <h3 id="services">Services</h3> @@ -569,6 +575,21 @@ Jobs without the service bit set only re <code>max_task_failures</code> times and only if they terminated unsuccessfully either due to human error or machine failure.</p> +<h3 id="revocable-jobs">Revocable Jobs</h3> + +<p><strong>WARNING</strong>: This feature is currently in alpha status. Do not use it in production clusters!</p> + +<p>Mesos <a href="http://mesos.apache.org/documentation/latest/oversubscription/">supports a concept of revocable tasks</a> +by oversubscribing machine resources by the amount deemed safe to not affect the existing +non-revocable tasks. Aurora now supports revocable jobs via a <code>tier</code> setting set to <code>revocable</code> +value.</p> + +<p>More implementation details in this <a href="https://issues.apache.org/jira/browse/AURORA-1343">ticket</a>.</p> + +<p>Scheduler must be <a href="deploying-aurora-scheduler.md#configuring-resource-oversubscription">configured</a> +to receive revocable offers from Mesos and accept revocable jobs. If not configured properly +revocable tasks will never get assigned to hosts and will stay in PENDING.</p> + <h3 id="updateconfig-objects">UpdateConfig Objects</h3> <p>Parameters for controlling the rate and policy of rolling updates.</p> Modified: aurora/site/publish/documentation/latest/configuration-tutorial/index.html URL: http://svn.apache.org/viewvc/aurora/site/publish/documentation/latest/configuration-tutorial/index.html?rev=1704991&r1=1704990&r2=1704991&view=diff ============================================================================== --- aurora/site/publish/documentation/latest/configuration-tutorial/index.html (original) +++ aurora/site/publish/documentation/latest/configuration-tutorial/index.html Thu Sep 24 05:36:06 2015 @@ -647,12 +647,7 @@ instances/replicas/shards of the Job&rsq for which higher values may preempt Tasks from Jobs with lower values.</p></li> <li><p><code>production</code>: a Boolean, defaulting to <code>False</code>, specifying that this -is a production job backed by quota. Tasks from production Jobs may -preempt tasks from any non-production job, and may only be preempted -by tasks from production jobs in the same role with higher -priority. <strong>WARNING</strong>: To run Jobs at this level, the Job role must -have the appropriate quota. To grant quota to a particular role in -production, operators use the <code>aurora_admin set_quota</code> command.</p></li> +is a <a href="configuration-reference.md#job-objects">production</a> job.</p></li> </ul> <p>The final three Job attributes each take an object as their value.</p> Modified: aurora/site/publish/documentation/latest/deploying-aurora-scheduler/index.html URL: http://svn.apache.org/viewvc/aurora/site/publish/documentation/latest/deploying-aurora-scheduler/index.html?rev=1704991&r1=1704990&r2=1704991&view=diff ============================================================================== --- aurora/site/publish/documentation/latest/deploying-aurora-scheduler/index.html (original) +++ aurora/site/publish/documentation/latest/deploying-aurora-scheduler/index.html Thu Sep 24 05:36:06 2015 @@ -61,6 +61,7 @@ machines. This guide helps you get the <li><a href="#network-considerations">Network considerations</a></li> <li><a href="#considerations-for-running-jobs-in-docker">Considerations for running jobs in docker</a></li> <li><a href="#security-considerations">Security Considerations</a></li> +<li><a href="#configuring-resource-oversubscription">Configuring Resource Oversubscription</a></li> </ul></li> <li><a href="#running-aurora">Running Aurora</a> @@ -75,6 +76,11 @@ machines. This guide helps you get the <li><a href="#example">Example</a></li> </ul></li> </ul></li> +<li><a href="#best-practices">Best practices</a> + +<ul> +<li><a href="#diversity">Diversity</a></li> +</ul></li> <li><a href="#common-problems">Common problems</a> <ul> @@ -84,9 +90,12 @@ machines. This guide helps you get the <li><a href="#scheduler-not-registered">Scheduler not registered</a></li> <li><a href="#symptoms-1">Symptoms</a></li> <li><a href="#solution-1">Solution</a></li> -<li><a href="#tasks-are-stuck-in-pending-forever">Tasks are stuck in PENDING forever</a></li> -<li><a href="#symptoms-2">Symptoms</a></li> -<li><a href="#solution-2">Solution</a></li> +</ul></li> +<li><a href="#changing-scheduler-quorum-size">Changing Scheduler Quorum Size</a> + +<ul> +<li><a href="#preparation">Preparation</a></li> +<li><a href="#adding-new-schedulers">Adding New Schedulers</a></li> </ul></li> </ul> @@ -264,6 +273,19 @@ restarted.</p> <p>See <a href="/documentation/latest/security/">security.md</a>.</p> +<h2 id="configuring-resource-oversubscription">Configuring Resource Oversubscription</h2> + +<p><strong>WARNING</strong>: This feature is currently in alpha status. Do not use it in production clusters! +See <a href="configuration-reference.md#revocable-jobs">this document</a> for more feature details.</p> + +<p>Set these scheduler flag to allow receiving revocable Mesos offers:</p> +<pre class="highlight text">-receive_revocable_resources=true +</pre> +<p>Specify a tier configuration file path:</p> +<pre class="highlight text">-tier_config=path/to/tiers/config.json +</pre> +<p>Example <a href="../src/test/resources/org/apache/aurora/scheduler/tiers-example.json">tier configuration file</a>.</p> + <h3 id="maintaining-an-aurora-installation">Maintaining an Aurora Installation</h3> <h3 id="monitoring">Monitoring</h3> @@ -286,6 +308,9 @@ constraints are arbitrary and available <code>dedicated</code> attribute. Aurora treats this specially, and only allows matching jobs to run on these machines, and will only schedule matching jobs on these machines.</p> +<p>See the <a href="resources.md#resource-quota">section</a> about resource quotas to learn how quotas apply to +dedicated jobs.</p> + <h5 id="syntax">Syntax</h5> <p>The dedicated attribute has semantic meaning. The format is <code>$role(/.*)?</code>. When a job is created, @@ -297,7 +322,7 @@ enforce this.</p> <h5 id="example">Example</h5> <p>Consider the following slave command line:</p> -<pre class="highlight text">mesos-slave --attributes="host:$HOST;rack:$RACK;dedicated:db_team/redis" ... +<pre class="highlight text">mesos-slave --attributes="dedicated:db_team/redis" ... </pre> <p>And this job configuration:</p> <pre class="highlight text">Service( @@ -313,6 +338,22 @@ enforce this.</p> <code>dedicated:db_team/redis</code>. Additionally, Aurora will prevent any tasks that do <em>not</em> have that constraint from running on those slaves.</p> +<h2 id="best-practices">Best practices</h2> + +<h3 id="diversity">Diversity</h3> + +<p>Data centers are often organized with hierarchical failure domains. Common failure domains +include hosts, racks, rows, and PDUs. If you have this information available, it is wise to tag +the mesos-slave with them as +<a href="https://mesos.apache.org/documentation/attributes-resources/">attributes</a>.</p> + +<p>When it comes time to schedule jobs, Aurora will automatically spread them across the failure +domains as specified in the +<a href="configuration-reference.md#specifying-scheduling-constraints">job configuration</a>.</p> + +<p>Note: in virtualized environments like EC2, the only attribute that usually makes sense for this +purpose is <code>host</code>.</p> + <h2 id="common-problems">Common problems</h2> <p>So you’ve started your first cluster and are running into some issues? We’ve collected some common @@ -354,20 +395,24 @@ the master in ZooKeeper, make sure comma <p>is the same as the one on the scheduler:</p> <pre class="highlight text">-mesos_master_address=zk://$ZK_HOST:2181/mesos/master </pre> -<h3 id="tasks-are-stuck-in-pending-forever">Tasks are stuck in <code>PENDING</code> forever</h3> +<h2 id="changing-scheduler-quorum-size">Changing Scheduler Quorum Size</h2> -<h4 id="symptoms">Symptoms</h4> +<p>Special care needs to be taken when changing the size of the Aurora scheduler quorum. +Since Aurora uses a Mesos replicated log, similar steps need to be followed as when +<a href="http://mesos.apache.org/documentation/latest/operational-guide">changing the mesos quorum size</a>.</p> -<p>The scheduler is registered, and <a href="monitoring.md#scheduler_resource_offers">receiving offers</a>, -but tasks are perpetually shown as <code>PENDING - Constraint not satisfied: host</code>.</p> +<h3 id="preparation">Preparation</h3> -<h4 id="solution">Solution</h4> +<p>Increase <a href="storage-config.md#-native_log_quorum_size">-native<em>log</em>quorum_size</a> on each +existing scheduler and restart them. When updating from 3 to 5 schedulers, the quorum size +would grow from 2 to 3.</p> -<p>Check that your slaves are configured with <code>host</code> and <code>rack</code> attributes. Aurora requires that -slaves are tagged with these two common failure domains to ensure that it can safely place tasks -such that jobs are resilient to failure.</p> +<h3 id="adding-new-schedulers">Adding New Schedulers</h3> -<p>See our <a href="examples/vagrant/upstart/mesos-slave.conf">vagrant example</a> for details.</p> +<p>Start the new schedulers with <code>-native_log_quorum_size</code> set to the new value. Failing to +first increase the quorum size on running schedulers can in some cases result in corruption +or truncating of the replicated log used by Aurora. In that case, see the documentation on +<a href="storage-config.md#recovering-from-a-scheduler-backup">recovering from backup</a>.</p> </div> </div> Modified: aurora/site/publish/documentation/latest/index.html URL: http://svn.apache.org/viewvc/aurora/site/publish/documentation/latest/index.html?rev=1704991&r1=1704990&r2=1704991&view=diff ============================================================================== --- aurora/site/publish/documentation/latest/index.html (original) +++ aurora/site/publish/documentation/latest/index.html Thu Sep 24 05:36:06 2015 @@ -72,7 +72,7 @@ <li><a href="/documentation/latest/storage/">Scheduler Storage</a></li> <li><a href="/documentation/latest/storage-config/">Scheduler Storage and Maintenance</a></li> <li><a href="/documentation/latest/sla/">SLA Measurement</a></li> -<li><a href="/documentation/latest/resource-isolation/">Resource Isolation and Sizing</a></li> +<li><a href="/documentation/latest/resources/">Resource Isolation and Sizing</a></li> <li><a href="/documentation/latest/test-resource-generation/">Generating test resources</a></li> </ul> Added: aurora/site/publish/documentation/latest/resources/index.html URL: http://svn.apache.org/viewvc/aurora/site/publish/documentation/latest/resources/index.html?rev=1704991&view=auto ============================================================================== --- aurora/site/publish/documentation/latest/resources/index.html (added) +++ aurora/site/publish/documentation/latest/resources/index.html Thu Sep 24 05:36:06 2015 @@ -0,0 +1,239 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <title>Apache Aurora</title> + <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css"> + <link href="/assets/css/main.css" rel="stylesheet"> + <!-- Analytics --> + <script type="text/javascript"> + var _gaq = _gaq || []; + _gaq.push(['_setAccount', 'UA-45879646-1']); + _gaq.push(['_setDomainName', 'apache.org']); + _gaq.push(['_trackPageview']); + + (function() { + var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; + ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; + var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); + })(); + </script> + </head> + <body> + + <div class="container-fluid section-header"> + <div class="container"> + <div class="nav nav-bar"> + <a href="/"><img src="/assets/img/aurora_logo_dkbkg.svg" width="300" alt="Transparent Apache Aurora logo with dark background"/></a> + <ul class="nav navbar-nav navbar-right"> + <li><a href="/documentation/latest/">Documentation</a></li> + <li><a href="/community/">Community</a></li> + <li><a href="/downloads/">Downloads</a></li> + <li><a href="/blog/">Blog</a></li> + </ul> + </div> + </div> +</div> + <div class="container-fluid"> + <div class="container content"> + <div class="col-md-12 documentation"> +<h5 class="page-header text-uppercase">Documentation</h5> +<h1 id="resources-and-sizing">Resources and Sizing</h1> + +<ul> +<li><a href="#introduction">Introduction</a></li> +<li><a href="#cpu-isolation">CPU Isolation</a></li> +<li><a href="#cpu-sizing">CPU Sizing</a></li> +<li><a href="#memory-isolation">Memory Isolation</a></li> +<li><a href="#memory-sizing">Memory Sizing</a></li> +<li><a href="#disk-space">Disk Space</a></li> +<li><a href="#disk-space-sizing">Disk Space Sizing</a></li> +<li><a href="#other-resources">Other Resources</a></li> +<li><a href="#resource-quota">Resource Quota</a></li> +<li><a href="#task-preemption">Task Preemption</a></li> +</ul> + +<h2 id="introduction">Introduction</h2> + +<p>Aurora is a multi-tenant system; a single software instance runs on a +server, serving multiple clients/tenants. To share resources among +tenants, it implements isolation of:</p> + +<ul> +<li>CPU</li> +<li>memory</li> +<li>disk space</li> +</ul> + +<p>CPU is a soft limit, and handled differently from memory and disk space. +Too low a CPU value results in throttling your application and +slowing it down. Memory and disk space are both hard limits; when your +application goes over these values, it’s killed.</p> + +<p>Let’s look at each resource type in more detail:</p> + +<h2 id="cpu-isolation">CPU Isolation</h2> + +<p>Mesos uses a quota based CPU scheduler (the <em>Completely Fair Scheduler</em>) +to provide consistent and predictable performance. This is effectively +a guarantee of resources – you receive at least what you requested, but +also no more than you’ve requested.</p> + +<p>The scheduler gives applications a CPU quota for every 100 ms interval. +When an application uses its quota for an interval, it is throttled for +the rest of the 100 ms. Usage resets for each interval and unused +quota does not carry over.</p> + +<p>For example, an application specifying 4.0 CPU has access to 400 ms of +CPU time every 100 ms. This CPU quota can be used in different ways, +depending on the application and available resources. Consider the +scenarios shown in this diagram.</p> + +<p><img alt="CPU Availability" src="../images/CPUavailability.png" /></p> + +<ul> +<li><p><em>Scenario A</em>: the application can use up to 4 cores continuously for +every 100 ms interval. It is never throttled and starts processing +new requests immediately.</p></li> +<li><p><em>Scenario B</em> : the application uses up to 8 cores (depending on +availability) but is throttled after 50 ms. The CPU quota resets at the +start of each new 100 ms interval.</p></li> +<li><p><em>Scenario C</em> : is like Scenario A, but there is a garbage collection +event in the second interval that consumes all CPU quota. The +application throttles for the remaining 75 ms of that interval and +cannot service requests until the next interval. In this example, the +garbage collection finished in one interval but, depending on how much +garbage needs collecting, it may take more than one interval and further +delay service of requests.</p></li> +</ul> + +<p><em>Technical Note</em>: Mesos considers logical cores, also known as +hyperthreading or SMT cores, as the unit of CPU.</p> + +<h2 id="cpu-sizing">CPU Sizing</h2> + +<p>To correctly size Aurora-run Mesos tasks, specify a per-shard CPU value +that lets the task run at its desired performance when at peak load +distributed across all shards. Include reserve capacity of at least 50%, +possibly more, depending on how critical your service is (or how +confident you are about your original estimate : -)), ideally by +increasing the number of shards to also improve resiliency. When running +your application, observe its CPU stats over time. If consistently at or +near your quota during peak load, you should consider increasing either +per-shard CPU or the number of shards.</p> + +<h2 id="memory-isolation">Memory Isolation</h2> + +<p>Mesos uses dedicated memory allocation. Your application always has +access to the amount of memory specified in your configuration. The +application’s memory use is defined as the sum of the resident set size +(RSS) of all processes in a shard. Each shard is considered +independently.</p> + +<p>In other words, say you specified a memory size of 10GB. Each shard +would receive 10GB of memory. If an individual shard’s memory demands +exceed 10GB, that shard is killed, but the other shards continue +working.</p> + +<p><em>Technical note</em>: Total memory size is not enforced at allocation time, +so your application can request more than its allocation without getting +an ENOMEM. However, it will be killed shortly after.</p> + +<h2 id="memory-sizing">Memory Sizing</h2> + +<p>Size for your application’s peak requirement. Observe the per-instance +memory statistics over time, as memory requirements can vary over +different periods. Remember that if your application exceeds its memory +value, it will be killed, so you should also add a safety margin of +around 10-20%. If you have the ability to do so, you may also want to +put alerts on the per-instance memory.</p> + +<h2 id="disk-space">Disk Space</h2> + +<p>Disk space used by your application is defined as the sum of the files’ +disk space in your application’s directory, including the <code>stdout</code> and +<code>stderr</code> logged from your application. Each shard is considered +independently. You should use off-node storage for your application’s +data whenever possible.</p> + +<p>In other words, say you specified disk space size of 100MB. Each shard +would receive 100MB of disk space. If an individual shard’s disk space +demands exceed 100MB, that shard is killed, but the other shards +continue working.</p> + +<p>After your application finishes running, its allocated disk space is +reclaimed. Thus, your job’s final action should move any disk content +that you want to keep, such as logs, to your home file system or other +less transitory storage. Disk reclamation takes place an undefined +period after the application finish time; until then, the disk contents +are still available but you shouldn’t count on them being so.</p> + +<p><em>Technical note</em> : Disk space is not enforced at write so your +application can write above its quota without getting an ENOSPC, but it +will be killed shortly after. This is subject to change.</p> + +<h2 id="disk-space-sizing">Disk Space Sizing</h2> + +<p>Size for your application’s peak requirement. Rotate and discard log +files as needed to stay within your quota. When running a Java process, +add the maximum size of the Java heap to your disk space requirement, in +order to account for an out of memory error dumping the heap +into the application’s sandbox space.</p> + +<h2 id="other-resources">Other Resources</h2> + +<p>Other resources, such as network bandwidth, do not have any performance +guarantees. For some resources, such as memory bandwidth, there are no +practical sharing methods so some application combinations collocated on +the same host may cause contention.</p> + +<h2 id="resource-quota">Resource Quota</h2> + +<p>Aurora requires resource quotas for +<a href="configuration-reference.md#job-objects">production non-dedicated jobs</a>. Quota is enforced at +the job role level and when set, defines a non-preemptible pool of compute resources within +that role.</p> + +<p>To grant quota to a particular role in production use <code>aurora_admin set_quota</code> command.</p> + +<p>NOTE: all job types (service, adhoc or cron) require role resource quota unless a job has +<a href="deploying-aurora-scheduler.md#dedicated-attribute">dedicated constraint set</a>.</p> + +<h2 id="task-preemption">Task preemption</h2> + +<p>Under a particular resource shortage pressure, tasks from +<a href="configuration-reference.md#job-objects">production</a> jobs may preempt tasks from any non-production +job. A production task may only be preempted by tasks from production jobs in the same role with +higher <a href="configuration-reference.md#job-objects">priority</a>.</p> +</div> + + </div> + </div> + + <div class="container-fluid section-footer buffer"> + <div class="container"> + <div class="row"> + <div class="col-md-2 col-md-offset-1"><h3>Quick Links</h3> + <ul> + <li><a href="/downloads/">Downloads</a></li> + <li><a href="/community/">Mailing Lists</a></li> + <li><a href="http://issues.apache.org/jira/browse/AURORA">Issue Tracking</a></li> + <li><a href="/documentation/latest/contributing/">How To Contribute</a></li> + </ul> + </div> + <div class="col-md-2"><h3>The ASF</h3> + <ul> + <li><a href="http://www.apache.org/licenses/">License</a></li> + <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li> + <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li> + <li><a href="http://www.apache.org/security/">Security</a></li> + </ul> + </div> + <div class="col-md-6"> + <p class="disclaimer">Copyright 2014 <a href="http://www.apache.org/">Apache Software Foundation</a>. Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>. The <a href="https://www.flickr.com/photos/trondk/12706051375/">Aurora Borealis IX photo</a> displayed on the homepage is available under a <a href="https://creativecommons.org/licenses/by-nc-nd/2.0/">Creative Commons BY-NC-ND 2.0 license</a>. Apache, Apache Aurora, and the Apache feather logo are trademarks of The Apache Software Foundation.</p> + </div> + </div> + </div> + </body> +</html> \ No newline at end of file Modified: aurora/site/publish/documentation/latest/tutorial/index.html URL: http://svn.apache.org/viewvc/aurora/site/publish/documentation/latest/tutorial/index.html?rev=1704991&r1=1704990&r2=1704991&view=diff ============================================================================== --- aurora/site/publish/documentation/latest/tutorial/index.html (original) +++ aurora/site/publish/documentation/latest/tutorial/index.html Thu Sep 24 05:36:06 2015 @@ -68,8 +68,8 @@ hierarchy is:</p> <p>This is the recommended first Aurora users document to read to start getting up to speed on the system.</p> -<p>To get help, email questions to the Aurora User List, -<a href="mailto:u...@aurora.apache.org">u...@aurora.apache.org</a></p> +<p>To get help, email questions to the Aurora Developer List, +<a href="mailto:d...@aurora.apache.org">d...@aurora.apache.org</a></p> <h2 id="setup-install-aurora">Setup: Install Aurora</h2> Modified: aurora/site/publish/sitemap.xml URL: http://svn.apache.org/viewvc/aurora/site/publish/sitemap.xml?rev=1704991&r1=1704990&r2=1704991&view=diff ============================================================================== --- aurora/site/publish/sitemap.xml (original) +++ aurora/site/publish/sitemap.xml Thu Sep 24 05:36:06 2015 @@ -2,158 +2,158 @@ <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>http://aurora.apache.org/blog/aurora-0-6-0-incubating-released/</loc> - <lastmod>2015-09-14T00:00:00-07:00</lastmod> + <lastmod>2015-09-23T00:00:00-07:00</lastmod> </url> <url> <loc>http://aurora.apache.org/blog/aurora-0-7-0-incubating-released/</loc> - <lastmod>2015-09-14T00:00:00-07:00</lastmod> + <lastmod>2015-09-23T00:00:00-07:00</lastmod> </url> <url> <loc>http://aurora.apache.org/blog/2015-upcoming-apache-aurora-meetups/</loc> - <lastmod>2015-09-14T00:00:00-07:00</lastmod> + <lastmod>2015-09-23T00:00:00-07:00</lastmod> </url> <url> <loc>http://aurora.apache.org/blog/aurora-0-8-0-released/</loc> - <lastmod>2015-09-14T00:00:00-07:00</lastmod> + <lastmod>2015-09-23T00:00:00-07:00</lastmod> </url> <url> <loc>http://aurora.apache.org/blog/aurora-0-9-0-released/</loc> - <lastmod>2015-09-14T00:00:00-07:00</lastmod> + <lastmod>2015-09-23T00:00:00-07:00</lastmod> </url> <url> <loc>http://aurora.apache.org/blog/aurora-at-mesoscon-seattle/</loc> - <lastmod>2015-09-14T00:00:00-07:00</lastmod> + <lastmod>2015-09-23T00:00:00-07:00</lastmod> </url> <url> <loc>http://aurora.apache.org/blog/</loc> - <lastmod>2015-09-14T00:00:00-07:00</lastmod> + <lastmod>2015-09-23T00:00:00-07:00</lastmod> </url> <url> <loc>http://aurora.apache.org/community/</loc> - <lastmod>2015-09-14T00:00:00-07:00</lastmod> + <lastmod>2015-09-23T00:00:00-07:00</lastmod> </url> <url> <loc>http://aurora.apache.org/developers/</loc> - <lastmod>2015-09-14T00:00:00-07:00</lastmod> + <lastmod>2015-09-23T00:00:00-07:00</lastmod> </url> <url> <loc>http://aurora.apache.org/docs/gettingstarted/</loc> - <lastmod>2015-09-14T00:00:00-07:00</lastmod> + <lastmod>2015-09-23T00:00:00-07:00</lastmod> </url> <url> <loc>http://aurora.apache.org/docs/howtocontribute/</loc> - <lastmod>2015-09-14T00:00:00-07:00</lastmod> + <lastmod>2015-09-23T00:00:00-07:00</lastmod> </url> <url> <loc>http://aurora.apache.org/documentation/latest/build-system/</loc> - <lastmod>2015-09-14T00:00:00-07:00</lastmod> + <lastmod>2015-09-23T00:00:00-07:00</lastmod> </url> <url> <loc>http://aurora.apache.org/documentation/latest/client-cluster-configuration/</loc> - <lastmod>2015-09-14T00:00:00-07:00</lastmod> + <lastmod>2015-09-23T00:00:00-07:00</lastmod> </url> <url> <loc>http://aurora.apache.org/documentation/latest/client-commands/</loc> - <lastmod>2015-09-14T00:00:00-07:00</lastmod> + <lastmod>2015-09-23T00:00:00-07:00</lastmod> </url> <url> <loc>http://aurora.apache.org/documentation/latest/committers/</loc> - <lastmod>2015-09-14T00:00:00-07:00</lastmod> + <lastmod>2015-09-23T00:00:00-07:00</lastmod> </url> <url> <loc>http://aurora.apache.org/documentation/latest/configuration-reference/</loc> - <lastmod>2015-09-14T00:00:00-07:00</lastmod> + <lastmod>2015-09-23T00:00:00-07:00</lastmod> </url> <url> <loc>http://aurora.apache.org/documentation/latest/configuration-tutorial/</loc> - <lastmod>2015-09-14T00:00:00-07:00</lastmod> + <lastmod>2015-09-23T00:00:00-07:00</lastmod> </url> <url> <loc>http://aurora.apache.org/documentation/latest/contributing/</loc> - <lastmod>2015-09-14T00:00:00-07:00</lastmod> + <lastmod>2015-09-23T00:00:00-07:00</lastmod> </url> <url> <loc>http://aurora.apache.org/documentation/latest/cron-jobs/</loc> - <lastmod>2015-09-14T00:00:00-07:00</lastmod> + <lastmod>2015-09-23T00:00:00-07:00</lastmod> </url> <url> <loc>http://aurora.apache.org/documentation/latest/deploying-aurora-scheduler/</loc> - <lastmod>2015-09-14T00:00:00-07:00</lastmod> + <lastmod>2015-09-23T00:00:00-07:00</lastmod> </url> <url> <loc>http://aurora.apache.org/documentation/latest/developing-aurora-client/</loc> - <lastmod>2015-09-14T00:00:00-07:00</lastmod> + <lastmod>2015-09-23T00:00:00-07:00</lastmod> </url> <url> <loc>http://aurora.apache.org/documentation/latest/developing-aurora-scheduler/</loc> - <lastmod>2015-09-14T00:00:00-07:00</lastmod> + <lastmod>2015-09-23T00:00:00-07:00</lastmod> </url> <url> <loc>http://aurora.apache.org/documentation/latest/hooks/</loc> - <lastmod>2015-09-14T00:00:00-07:00</lastmod> + <lastmod>2015-09-23T00:00:00-07:00</lastmod> </url> <url> <loc>http://aurora.apache.org/documentation/latest/monitoring/</loc> - <lastmod>2015-09-14T00:00:00-07:00</lastmod> + <lastmod>2015-09-23T00:00:00-07:00</lastmod> </url> <url> <loc>http://aurora.apache.org/documentation/latest/presentations/</loc> - <lastmod>2015-09-14T00:00:00-07:00</lastmod> + <lastmod>2015-09-23T00:00:00-07:00</lastmod> </url> <url> - <loc>http://aurora.apache.org/documentation/latest/resource-isolation/</loc> - <lastmod>2015-09-14T00:00:00-07:00</lastmod> + <loc>http://aurora.apache.org/documentation/latest/resources/</loc> + <lastmod>2015-09-23T00:00:00-07:00</lastmod> </url> <url> <loc>http://aurora.apache.org/documentation/latest/scheduler-storage/</loc> - <lastmod>2015-09-14T00:00:00-07:00</lastmod> + <lastmod>2015-09-23T00:00:00-07:00</lastmod> </url> <url> <loc>http://aurora.apache.org/documentation/latest/security/</loc> - <lastmod>2015-09-14T00:00:00-07:00</lastmod> + <lastmod>2015-09-23T00:00:00-07:00</lastmod> </url> <url> <loc>http://aurora.apache.org/documentation/latest/sla/</loc> - <lastmod>2015-09-14T00:00:00-07:00</lastmod> + <lastmod>2015-09-23T00:00:00-07:00</lastmod> </url> <url> <loc>http://aurora.apache.org/documentation/latest/storage-config/</loc> - <lastmod>2015-09-14T00:00:00-07:00</lastmod> + <lastmod>2015-09-23T00:00:00-07:00</lastmod> </url> <url> <loc>http://aurora.apache.org/documentation/latest/storage/</loc> - <lastmod>2015-09-14T00:00:00-07:00</lastmod> + <lastmod>2015-09-23T00:00:00-07:00</lastmod> </url> <url> <loc>http://aurora.apache.org/documentation/latest/test-resource-generation/</loc> - <lastmod>2015-09-14T00:00:00-07:00</lastmod> + <lastmod>2015-09-23T00:00:00-07:00</lastmod> </url> <url> <loc>http://aurora.apache.org/documentation/latest/thrift-deprecation/</loc> - <lastmod>2015-09-14T00:00:00-07:00</lastmod> + <lastmod>2015-09-23T00:00:00-07:00</lastmod> </url> <url> <loc>http://aurora.apache.org/documentation/latest/tutorial/</loc> - <lastmod>2015-09-14T00:00:00-07:00</lastmod> + <lastmod>2015-09-23T00:00:00-07:00</lastmod> </url> <url> <loc>http://aurora.apache.org/documentation/latest/user-guide/</loc> - <lastmod>2015-09-14T00:00:00-07:00</lastmod> + <lastmod>2015-09-23T00:00:00-07:00</lastmod> </url> <url> <loc>http://aurora.apache.org/documentation/latest/vagrant/</loc> - <lastmod>2015-09-14T00:00:00-07:00</lastmod> + <lastmod>2015-09-23T00:00:00-07:00</lastmod> </url> <url> <loc>http://aurora.apache.org/documentation/latest/</loc> - <lastmod>2015-09-14T00:00:00-07:00</lastmod> + <lastmod>2015-09-23T00:00:00-07:00</lastmod> </url> <url> <loc>http://aurora.apache.org/downloads/</loc> - <lastmod>2015-09-14T00:00:00-07:00</lastmod> + <lastmod>2015-09-23T00:00:00-07:00</lastmod> </url> <url> <loc>http://aurora.apache.org/</loc> - <lastmod>2015-09-14T00:00:00-07:00</lastmod> + <lastmod>2015-09-23T00:00:00-07:00</lastmod> </url> </urlset> \ No newline at end of file Modified: aurora/site/source/documentation/latest.html.md URL: http://svn.apache.org/viewvc/aurora/site/source/documentation/latest.html.md?rev=1704991&r1=1704990&r2=1704991&view=diff ============================================================================== --- aurora/site/source/documentation/latest.html.md (original) +++ aurora/site/source/documentation/latest.html.md Thu Sep 24 05:36:06 2015 @@ -23,7 +23,7 @@ We encourage you to ask questions on the * [Scheduler Storage](/documentation/latest/storage/) * [Scheduler Storage and Maintenance](/documentation/latest/storage-config/) * [SLA Measurement](/documentation/latest/sla/) - * [Resource Isolation and Sizing](/documentation/latest/resource-isolation/) + * [Resource Isolation and Sizing](/documentation/latest/resources/) * [Generating test resources](/documentation/latest/test-resource-generation/) ## Developers Modified: aurora/site/source/documentation/latest/client-commands.md URL: http://svn.apache.org/viewvc/aurora/site/source/documentation/latest/client-commands.md?rev=1704991&r1=1704990&r2=1704991&view=diff ============================================================================== --- aurora/site/source/documentation/latest/client-commands.md (original) +++ aurora/site/source/documentation/latest/client-commands.md Thu Sep 24 05:36:06 2015 @@ -332,7 +332,8 @@ configuration file, and displays the par aurora quota get CLUSTER/ROLE Prints the production quota allocated to the role's value at the given -cluster. +cluster. Only non-[dedicated](deploying-aurora-scheduler.md#dedicated-attribute) +[production](configuration-reference.md#job-objects) jobs consume quota. ### Finding a Job on Web UI Modified: aurora/site/source/documentation/latest/configuration-reference.md URL: http://svn.apache.org/viewvc/aurora/site/source/documentation/latest/configuration-reference.md?rev=1704991&r1=1704990&r2=1704991&view=diff ============================================================================== --- aurora/site/source/documentation/latest/configuration-reference.md (original) +++ aurora/site/source/documentation/latest/configuration-reference.md Thu Sep 24 05:36:06 2015 @@ -26,6 +26,7 @@ Aurora + Thermos Configuration Reference - [Job Schema](#job-schema) - [Job Objects](#job-objects) - [Services](#services) + - [Revocable Jobs](#revocable-jobs) - [UpdateConfig Objects](#updateconfig-objects) - [HealthCheckConfig Objects](#healthcheckconfig-objects) - [Announcer Objects](#announcer-objects) @@ -293,7 +294,7 @@ ordering constraints. ### Resource Object Specifies the amount of CPU, Ram, and disk resources the task needs. See the -[Resource Isolation document](/documentation/latest/resource-isolation/) for suggested values and to understand how +[Resource Isolation document](/documentation/latest/resources/) for suggested values and to understand how resources are allocated. param | type | description @@ -324,10 +325,11 @@ Job Schema ```service``` | Boolean | If True, restart tasks regardless of success or failure. (Default: False) ```max_task_failures``` | Integer | Maximum number of failures after which the task is considered to have failed (Default: 1) Set to -1 to allow for infinite failures ```priority``` | Integer | Preemption priority to give the task (Default 0). Tasks with higher priorities may preempt tasks at lower priorities. - ```production``` | Boolean | Whether or not this is a production task backed by quota (Default: False). Production jobs may preempt any non-production job, and may only be preempted by production jobs in the same role and of higher priority. To run jobs at this level, the job role must have the appropriate quota. To grant quota to a particular role in production, operators use the ``aurora_admin set_quota`` command. + ```production``` | Boolean | Whether or not this is a production task that may [preempt](resources.md#task-preemption) other tasks (Default: False). Production job role must have the appropriate [quota](resources.md#resource-quota). ```health_check_config``` | ```heath_check_config``` object | Parameters for controlling a task's health checks via HTTP. Only used if a health port was assigned with a command line wildcard. ```container``` | ```Container``` object | An optional container to run all processes inside of. ```lifecycle``` | ```LifecycleConfig``` object | An optional task lifecycle configuration that dictates commands to be executed on startup/teardown. HTTP lifecycle is enabled by default if the "health" port is requested. See [LifecycleConfig Objects](#lifecycleconfig-objects) for more information. + ```tier``` | String | Task tier type. When set to `revocable` requires the task to run with Mesos revocable resources. This is work [in progress](https://issues.apache.org/jira/browse/AURORA-1343) and is currently only supported for the revocable tasks. The ultimate goal is to simplify task configuration by hiding various configuration knobs behind a task tier definition. See AURORA-1343 and AURORA-1443 for more details. ### Services @@ -339,6 +341,21 @@ Jobs without the service bit set only re `max_task_failures` times and only if they terminated unsuccessfully either due to human error or machine failure. +### Revocable Jobs + +**WARNING**: This feature is currently in alpha status. Do not use it in production clusters! + +Mesos [supports a concept of revocable tasks](http://mesos.apache.org/documentation/latest/oversubscription/) +by oversubscribing machine resources by the amount deemed safe to not affect the existing +non-revocable tasks. Aurora now supports revocable jobs via a `tier` setting set to `revocable` +value. + +More implementation details in this [ticket](https://issues.apache.org/jira/browse/AURORA-1343). + +Scheduler must be [configured](deploying-aurora-scheduler.md#configuring-resource-oversubscription) +to receive revocable offers from Mesos and accept revocable jobs. If not configured properly +revocable tasks will never get assigned to hosts and will stay in PENDING. + ### UpdateConfig Objects Parameters for controlling the rate and policy of rolling updates. Modified: aurora/site/source/documentation/latest/configuration-tutorial.md URL: http://svn.apache.org/viewvc/aurora/site/source/documentation/latest/configuration-tutorial.md?rev=1704991&r1=1704990&r2=1704991&view=diff ============================================================================== --- aurora/site/source/documentation/latest/configuration-tutorial.md (original) +++ aurora/site/source/documentation/latest/configuration-tutorial.md Thu Sep 24 05:36:06 2015 @@ -581,12 +581,7 @@ Three attributes deal with configuring t values. - `production`: a Boolean, defaulting to `False`, specifying that this - is a production job backed by quota. Tasks from production Jobs may - preempt tasks from any non-production job, and may only be preempted - by tasks from production jobs in the same role with higher - priority. **WARNING**: To run Jobs at this level, the Job role must - have the appropriate quota. To grant quota to a particular role in - production, operators use the ``aurora_admin set_quota`` command. + is a [production](configuration-reference.md#job-objects) job. The final three Job attributes each take an object as their value. Modified: aurora/site/source/documentation/latest/deploying-aurora-scheduler.md URL: http://svn.apache.org/viewvc/aurora/site/source/documentation/latest/deploying-aurora-scheduler.md?rev=1704991&r1=1704990&r2=1704991&view=diff ============================================================================== --- aurora/site/source/documentation/latest/deploying-aurora-scheduler.md (original) +++ aurora/site/source/documentation/latest/deploying-aurora-scheduler.md Thu Sep 24 05:36:06 2015 @@ -14,6 +14,7 @@ machines. This guide helps you get the - [Network considerations](#network-considerations) - [Considerations for running jobs in docker](#considerations-for-running-jobs-in-docker) - [Security Considerations](#security-considerations) + - [Configuring Resource Oversubscription](#configuring-resource-oversubscription) - [Running Aurora](#running-aurora) - [Maintaining an Aurora Installation](#maintaining-an-aurora-installation) - [Monitoring](#monitoring) @@ -21,6 +22,8 @@ machines. This guide helps you get the - [Dedicated attribute](#dedicated-attribute) - [Syntax](#syntax) - [Example](#example) +- [Best practices](#best-practices) + - [Diversity](#diversity) - [Common problems](#common-problems) - [Replicated log not initialized](#replicated-log-not-initialized) - [Symptoms](#symptoms) @@ -28,9 +31,9 @@ machines. This guide helps you get the - [Scheduler not registered](#scheduler-not-registered) - [Symptoms](#symptoms-1) - [Solution](#solution-1) - - [Tasks are stuck in PENDING forever](#tasks-are-stuck-in-pending-forever) - - [Symptoms](#symptoms-2) - - [Solution](#solution-2) +- [Changing Scheduler Quorum Size](#changing-scheduler-quorum-size) + - [Preparation](#preparation) + - [Adding New Schedulers](#adding-new-schedulers) ## Installing Aurora The Aurora scheduler is a standalone Java server. As part of the build process it creates a bundle @@ -188,6 +191,21 @@ assuming you set `-http_port=8081`. See [security.md](/documentation/latest/security/). +## Configuring Resource Oversubscription + +**WARNING**: This feature is currently in alpha status. Do not use it in production clusters! +See [this document](configuration-reference.md#revocable-jobs) for more feature details. + +Set these scheduler flag to allow receiving revocable Mesos offers: + + -receive_revocable_resources=true + +Specify a tier configuration file path: + + -tier_config=path/to/tiers/config.json + +Example [tier configuration file](../src/test/resources/org/apache/aurora/scheduler/tiers-example.json). + ### Maintaining an Aurora Installation ### Monitoring @@ -207,6 +225,9 @@ constraints are arbitrary and available `dedicated` attribute. Aurora treats this specially, and only allows matching jobs to run on these machines, and will only schedule matching jobs on these machines. +See the [section](resources.md#resource-quota) about resource quotas to learn how quotas apply to +dedicated jobs. + ##### Syntax The dedicated attribute has semantic meaning. The format is `$role(/.*)?`. When a job is created, the scheduler requires that the `$role` component matches the `role` field in the job @@ -217,7 +238,7 @@ enforce this. ##### Example Consider the following slave command line: - mesos-slave --attributes="host:$HOST;rack:$RACK;dedicated:db_team/redis" ... + mesos-slave --attributes="dedicated:db_team/redis" ... And this job configuration: @@ -234,6 +255,19 @@ The job configuration is indicating that `dedicated:db_team/redis`. Additionally, Aurora will prevent any tasks that do _not_ have that constraint from running on those slaves. +## Best practices +### Diversity +Data centers are often organized with hierarchical failure domains. Common failure domains +include hosts, racks, rows, and PDUs. If you have this information available, it is wise to tag +the mesos-slave with them as +[attributes](https://mesos.apache.org/documentation/attributes-resources/). + +When it comes time to schedule jobs, Aurora will automatically spread them across the failure +domains as specified in the +[job configuration](configuration-reference.md#specifying-scheduling-constraints). + +Note: in virtualized environments like EC2, the only attribute that usually makes sense for this +purpose is `host`. ## Common problems So you've started your first cluster and are running into some issues? We've collected some common @@ -275,15 +309,18 @@ is the same as the one on the scheduler: -mesos_master_address=zk://$ZK_HOST:2181/mesos/master -### Tasks are stuck in `PENDING` forever - -#### Symptoms -The scheduler is registered, and [receiving offers](monitoring.md#scheduler_resource_offers), -but tasks are perpetually shown as `PENDING - Constraint not satisfied: host`. - -#### Solution -Check that your slaves are configured with `host` and `rack` attributes. Aurora requires that -slaves are tagged with these two common failure domains to ensure that it can safely place tasks -such that jobs are resilient to failure. - -See our [vagrant example](examples/vagrant/upstart/mesos-slave.conf) for details. +## Changing Scheduler Quorum Size +Special care needs to be taken when changing the size of the Aurora scheduler quorum. +Since Aurora uses a Mesos replicated log, similar steps need to be followed as when +[changing the mesos quorum size](http://mesos.apache.org/documentation/latest/operational-guide). + +### Preparation +Increase [-native_log_quorum_size](storage-config.md#-native_log_quorum_size) on each +existing scheduler and restart them. When updating from 3 to 5 schedulers, the quorum size +would grow from 2 to 3. + +### Adding New Schedulers +Start the new schedulers with `-native_log_quorum_size` set to the new value. Failing to +first increase the quorum size on running schedulers can in some cases result in corruption +or truncating of the replicated log used by Aurora. In that case, see the documentation on +[recovering from backup](storage-config.md#recovering-from-a-scheduler-backup). Added: aurora/site/source/documentation/latest/resources.md URL: http://svn.apache.org/viewvc/aurora/site/source/documentation/latest/resources.md?rev=1704991&view=auto ============================================================================== --- aurora/site/source/documentation/latest/resources.md (added) +++ aurora/site/source/documentation/latest/resources.md Thu Sep 24 05:36:06 2015 @@ -0,0 +1,164 @@ +Resources and Sizing +============================= + +- [Introduction](#introduction) +- [CPU Isolation](#cpu-isolation) +- [CPU Sizing](#cpu-sizing) +- [Memory Isolation](#memory-isolation) +- [Memory Sizing](#memory-sizing) +- [Disk Space](#disk-space) +- [Disk Space Sizing](#disk-space-sizing) +- [Other Resources](#other-resources) +- [Resource Quota](#resource-quota) +- [Task Preemption](#task-preemption) + +## Introduction + +Aurora is a multi-tenant system; a single software instance runs on a +server, serving multiple clients/tenants. To share resources among +tenants, it implements isolation of: + +* CPU +* memory +* disk space + +CPU is a soft limit, and handled differently from memory and disk space. +Too low a CPU value results in throttling your application and +slowing it down. Memory and disk space are both hard limits; when your +application goes over these values, it's killed. + +Let's look at each resource type in more detail: + +## CPU Isolation + +Mesos uses a quota based CPU scheduler (the *Completely Fair Scheduler*) +to provide consistent and predictable performance. This is effectively +a guarantee of resources -- you receive at least what you requested, but +also no more than you've requested. + +The scheduler gives applications a CPU quota for every 100 ms interval. +When an application uses its quota for an interval, it is throttled for +the rest of the 100 ms. Usage resets for each interval and unused +quota does not carry over. + +For example, an application specifying 4.0 CPU has access to 400 ms of +CPU time every 100 ms. This CPU quota can be used in different ways, +depending on the application and available resources. Consider the +scenarios shown in this diagram. + +![CPU Availability](images/CPUavailability.png) + +* *Scenario A*: the application can use up to 4 cores continuously for +every 100 ms interval. It is never throttled and starts processing +new requests immediately. + +* *Scenario B* : the application uses up to 8 cores (depending on +availability) but is throttled after 50 ms. The CPU quota resets at the +start of each new 100 ms interval. + +* *Scenario C* : is like Scenario A, but there is a garbage collection +event in the second interval that consumes all CPU quota. The +application throttles for the remaining 75 ms of that interval and +cannot service requests until the next interval. In this example, the +garbage collection finished in one interval but, depending on how much +garbage needs collecting, it may take more than one interval and further +delay service of requests. + +*Technical Note*: Mesos considers logical cores, also known as +hyperthreading or SMT cores, as the unit of CPU. + +## CPU Sizing + +To correctly size Aurora-run Mesos tasks, specify a per-shard CPU value +that lets the task run at its desired performance when at peak load +distributed across all shards. Include reserve capacity of at least 50%, +possibly more, depending on how critical your service is (or how +confident you are about your original estimate : -)), ideally by +increasing the number of shards to also improve resiliency. When running +your application, observe its CPU stats over time. If consistently at or +near your quota during peak load, you should consider increasing either +per-shard CPU or the number of shards. + +## Memory Isolation + +Mesos uses dedicated memory allocation. Your application always has +access to the amount of memory specified in your configuration. The +application's memory use is defined as the sum of the resident set size +(RSS) of all processes in a shard. Each shard is considered +independently. + +In other words, say you specified a memory size of 10GB. Each shard +would receive 10GB of memory. If an individual shard's memory demands +exceed 10GB, that shard is killed, but the other shards continue +working. + +*Technical note*: Total memory size is not enforced at allocation time, +so your application can request more than its allocation without getting +an ENOMEM. However, it will be killed shortly after. + +## Memory Sizing + +Size for your application's peak requirement. Observe the per-instance +memory statistics over time, as memory requirements can vary over +different periods. Remember that if your application exceeds its memory +value, it will be killed, so you should also add a safety margin of +around 10-20%. If you have the ability to do so, you may also want to +put alerts on the per-instance memory. + +## Disk Space + +Disk space used by your application is defined as the sum of the files' +disk space in your application's directory, including the `stdout` and +`stderr` logged from your application. Each shard is considered +independently. You should use off-node storage for your application's +data whenever possible. + +In other words, say you specified disk space size of 100MB. Each shard +would receive 100MB of disk space. If an individual shard's disk space +demands exceed 100MB, that shard is killed, but the other shards +continue working. + +After your application finishes running, its allocated disk space is +reclaimed. Thus, your job's final action should move any disk content +that you want to keep, such as logs, to your home file system or other +less transitory storage. Disk reclamation takes place an undefined +period after the application finish time; until then, the disk contents +are still available but you shouldn't count on them being so. + +*Technical note* : Disk space is not enforced at write so your +application can write above its quota without getting an ENOSPC, but it +will be killed shortly after. This is subject to change. + +## Disk Space Sizing + +Size for your application's peak requirement. Rotate and discard log +files as needed to stay within your quota. When running a Java process, +add the maximum size of the Java heap to your disk space requirement, in +order to account for an out of memory error dumping the heap +into the application's sandbox space. + +## Other Resources + +Other resources, such as network bandwidth, do not have any performance +guarantees. For some resources, such as memory bandwidth, there are no +practical sharing methods so some application combinations collocated on +the same host may cause contention. + +## Resource Quota + +Aurora requires resource quotas for +[production non-dedicated jobs](configuration-reference.md#job-objects). Quota is enforced at +the job role level and when set, defines a non-preemptible pool of compute resources within +that role. + +To grant quota to a particular role in production use `aurora_admin set_quota` command. + +NOTE: all job types (service, adhoc or cron) require role resource quota unless a job has +[dedicated constraint set](deploying-aurora-scheduler.md#dedicated-attribute). + +## Task preemption + +Under a particular resource shortage pressure, tasks from +[production](configuration-reference.md#job-objects) jobs may preempt tasks from any non-production +job. A production task may only be preempted by tasks from production jobs in the same role with +higher [priority](configuration-reference.md#job-objects). \ No newline at end of file Modified: aurora/site/source/documentation/latest/tutorial.md URL: http://svn.apache.org/viewvc/aurora/site/source/documentation/latest/tutorial.md?rev=1704991&r1=1704990&r2=1704991&view=diff ============================================================================== --- aurora/site/source/documentation/latest/tutorial.md (original) +++ aurora/site/source/documentation/latest/tutorial.md Thu Sep 24 05:36:06 2015 @@ -24,8 +24,8 @@ hierarchy is: This is the recommended first Aurora users document to read to start getting up to speed on the system. -To get help, email questions to the Aurora User List, -[u...@aurora.apache.org](mailto:u...@aurora.apache.org) +To get help, email questions to the Aurora Developer List, +[d...@aurora.apache.org](mailto:d...@aurora.apache.org) ## Setup: Install Aurora