Answers: <h2>Orchestration Timers</h2>
  
  <p>Regardless of the internal implementation, there is most likely an orchestrator that starts and stops a timer based on particular signals or events within the Fargate service. Basically, the charges are from when the pull command are executed until an orchestration process issues or receives the termination command/signal for your process. Conceptually, think of it as similar to wrapping a shell script in <code>time { :; }</code>.</p>
  
  <p>Again conceptually, you might think of the way it charges as the following pseudocode:</p>
  
  <pre><code>cpu_charges = $num_cpus * cpu_rate_per_second
  mem_charges = $mem_size * mem_rate_per_second
  charge_rate = cpu_charges + mem_charges
  
  elapsed_time = time () {
      docker pull foo_image
      docker run --cpus $num_cpus -m $mem_size -it --rm foo_image
  }
  
  bill_for elapsed_time * charge_rate
  </code></pre>
  
  <p>I am not currently aware of any public documentation that exposes the <em>real</em> mechanics of how this is internally implemented by AWS, but this is likely accurate enough for most practical purposes.</p>
  
Answers: CC BY-SA 4.0
Answers: 2018-08-24T17:21:23.117Z
Answers: 2018-08-24T17:21:23.117Z
Answers: CodeGnome
Body: <p>According to Amazon's <a href="https://aws.amazon.com/fargate/pricing/" rel="nofollow noreferrer">official documentation</a>, </p>
  
  <blockquote>
    <p>For Amazon ECS, AWS Fargate pricing is calculated based on the vCPU
    and memory resources used from the time you start to download your
    container image (docker pull) until the Amazon ECS Task* terminates,
    rounded up to the nearest second. A minimum charge of 1 minute
    applies.</p>
  </blockquote>
  
  <p>Does this mean that</p>
  
  <p>a) It <strong>knows</strong> when my containers consume cpu/ram and applies charges <strong>only</strong> for this time frames?</p>
  
  <p>b) It aplies charges based on pre-allocations I do when creating the tasks?</p>
  
Tags: <amazon-web-services><amazon-ecs>
Title: AWS: Fargate charging model
UserDisplayName: pkaramol
ThreadText: # AWS: Fargate charging model
  
  (Asked by: username_0 on 2018-08-23)
  
  According to Amazon's [official documentation](https://aws.amazon.com/fargate/pricing/),
  
  > For Amazon ECS, AWS Fargate pricing is calculated based on the vCPU
  > and memory resources used from the time you start to download your
  > container image (docker pull) until the Amazon ECS Task\* terminates,
  > rounded up to the nearest second. A minimum charge of 1 minute
  > applies.
  
  Does this mean that
  
  a) It **knows** when my containers consume cpu/ram and applies charges **only** for this time frames?
  
  b) It aplies charges based on pre-allocations I do when creating the tasks?
  
  **Tags:** amazon-web-services, amazon-ecs
  
  
  ---
  
  ## 1 answers
  
  ### Answer by username_1 on 2018-08-24. Score: 1
  
  ## Orchestration Timers
  
  Regardless of the internal implementation, there is most likely an orchestrator that starts and stops a timer based on particular signals or events within the Fargate service. Basically, the charges are from when the pull command are executed until an orchestration process issues or receives the termination command/signal for your process. Conceptually, think of it as similar to wrapping a shell script in `time { :; }`.
  
  Again conceptually, you might think of the way it charges as the following pseudocode:
  
  ```
  cpu_charges = $num_cpus * cpu_rate_per_second
  mem_charges = $mem_size * mem_rate_per_second
  charge_rate = cpu_charges + mem_charges
  
  elapsed_time = time () {
      docker pull foo_image
      docker run --cpus $num_cpus -m $mem_size -it --rm foo_image
  }
  
  bill_for elapsed_time * charge_rate
  
  ```
  
  I am not currently aware of any public documentation that exposes the *real* mechanics of how this is internally implemented by AWS, but this is likely accurate enough for most practical purposes.
  
  
  ---
  
  