AWS ParallelCluster builds high-performance computing (HPC) clusters on AWS, and it has no price of its own. In AWS's words, "you only pay for the AWS resources that are created when you create or update AWS ParallelCluster images and clusters". So AWS ParallelCluster pricing is the price of what a cluster is made of: a head node that never stops, Slurm queues of compute nodes that come and go with the jobs, shared storage such as Amazon FSx for Lustre, logs in Amazon CloudWatch, and the data transfer between them. This article covers what each part is, how it works under the hood, what it bills in the Paris Region (eu-west-3), and the ways AWS documents to pay less. Four priced clusters show what the levers do to whole monthly bills, and the cost section opens with an index of the levers, in the order to work through them.
Prices in this article are AWS list prices for the EU (Paris) Region, in USD before tax, from the AWS Price List. The offer files and their publication dates are listed in the Sources section, and each table repeats the dates of its own prices. Monthly amounts (730 hours), totals and percentages are computed from these prices. Spot prices are not in the AWS Price List: no Spot price is shown.
What AWS ParallelCluster is, and why it has no price of its own
AWS ParallelCluster is a cluster management tool that AWS supports. The user guide says what it does: "It automatically sets up the required compute resources, scheduler, and shared file system." You drive it with a command line interface (pcluster), an API, a web interface (PCUI), a Python library, or as an AWS CloudFormation custom resource, and you describe each cluster in one YAML file: its head node, its queues, its shared storage, its monitoring.
The scheduler is Slurm. The same page notes that "Starting with AWS ParallelCluster version 3.16.0, AWS Batch as a scheduler is no longer supported." Every resource the tool creates is an ordinary AWS resource in your account, billed under its own service: there is no "ParallelCluster" line on the bill. The list of AWS services it uses is long, from Amazon EC2 and Amazon EBS to Amazon DynamoDB and Amazon Route 53, but a few lines carry almost all of the cost:
What an AWS ParallelCluster cluster bills, and the setting that drives each line
| Part of the cluster | Billed by | What sets the amount |
|---|---|---|
| Head node | Amazon EC2, per hour | HeadNode / InstanceType, every hour the cluster exists |
| Login nodes | Amazon EC2, per hour | LoginNodes / Pools / Count and InstanceType |
| Compute nodes | Amazon EC2, per hour | MinCount, MaxCount, the jobs, ScaledownIdletime |
| Root and shared volumes | Amazon EBS, per GB-month | Size and type, for as long as each volume exists |
| Shared file systems | Amazon FSx, Amazon EFS, per GB-month | DeploymentType, PerUnitStorageThroughput, StorageCapacity |
| Logs | Amazon CloudWatch, per GB | Monitoring / Logs, RetentionInDays |
| Data transfer | AWS data transfer, per GB | Subnets in one zone or several, data in or out of the Region |
How an AWS ParallelCluster cluster works, under the hood
AWS describes CloudFormation as "the main service used by AWS ParallelCluster. Each cluster in AWS ParallelCluster is represented as a stack". Creating a cluster creates that stack; deleting the cluster deletes it, with the resources it manages.
- AWS ParallelCluster creates the cluster as a CloudFormation stack. The tool has no charge: the bill is the resources it creates.
- The head node runs the Slurm scheduler every hour the cluster exists ($0.2352 an hour for an m7i.xlarge); login nodes, when there are any, run all the time too.
- Compute nodes bill only while they exist: static nodes (MinCount) all the time, dynamic nodes from launch until ScaledownIdletime minutes after their last job, and the few minutes their termination takes ($8.5553 an hour for an hpc7a.96xlarge).
- The shared storage bills by the GB-month it exists ($0.162 per GB-month for a scratch FSx for Lustre file system), and the logs by the GB ingested ($0.5985) and stored.
The head node and the login nodes
AWS lists the logs of Slurm's controller, slurmctld, among the head node's, and those of its node daemon, slurmd, among the compute fleet's (Integration with Amazon CloudWatch Logs): it follows that the head node runs the Slurm controller. It "tracks provisioned instances in a DynamoDB table", and by default it also serves files: with SharedStorageType left at Ebs, "the head node will export portions of its root volume as shared directories for compute nodes and login nodes using NFS" (HeadNode section). Two constraints shape its cost. Its instance type must have the compute nodes' architecture, and it cannot change: the update policy reads "If this setting is changed, the update is not allowed." A head node is sized once, for the life of the cluster.
Login nodes, since version 3.7.0, give users a shell without the head node; a pool's Count "Specifies the number of login nodes to keep active" (LoginNodes section). It follows that, like the head node, they run, and bill, all the time.
The Slurm queues: static nodes and dynamic nodes
Each queue has compute resources, each with a MinCount and a MaxCount. The Scheduling section gives the defaults: MinCount "The default is 0", MaxCount "The default is 10". The nodes up to MinCount are static: "At cluster creation time, the head node waits for all the static nodes to be ready before signaling the success of cluster creation." The others are dynamic, and ScaledownIdletime "Defines the amount of time (in minutes) that there's no job and the Slurm node terminates. The default value is 10." The Slurm guide for multiple queue mode draws the line: "Dynamic nodes automatically enter the POWER_DOWN state after ScaledownIdletime. In contrast, static nodes in most cases aren't powered down", and "Backing instances for POWER_DOWN nodes are immediately terminated. The terminate process usually is finished in a few minutes." It follows that static nodes bill every hour the cluster exists, and dynamic nodes from their launch until a few minutes after ScaledownIdletime.
A queue's CapacityType is ONDEMAND by default, SPOT, or CAPACITY_BLOCK; with a Capacity Block, "all the instances part of the Capacity Block reservation are managed as static nodes". Spreading a queue over zones has a price too, in AWS's words: "The use of multiple Availability Zones might cause increases in storage networking latency and added inter-AZ data transfer costs."
Instances for HPC: EFA, the HPC types and Graviton
Tightly coupled jobs, such as MPI simulations, exchange data between nodes all the time. For them, AWS offers the Elastic Fabric Adapter (EFA), which "provides lower and more consistent latency and higher throughput", and EFA, in the EC2 guide's words, "is available as an optional Amazon EC2 networking feature that you can enable on any supported instance at no additional cost". Its traffic "can't cross Availability Zones or VPCs". A queue turns it on with Efa / Enabled, off by default, usually with a cluster placement group.
The HPC instance types (hpc6a, hpc6id, hpc7a, hpc7g, hpc8a) all have EFA and one thread per core, and none of them supports Spot. Two of them run in Paris: the EC2 list of instance types by Region gives "Hpc6id | Hpc7a" for Europe (Paris), and the Paris price list has rows for those two only. Every hpc7a size has the same price, and AWS lists the same 768 GiB and 300 Gbps for each: it follows that a smaller size buys the same memory and network per node for fewer cores.
Instances for an AWS ParallelCluster queue in Paris (eu-west-3), On-Demand, Linux
| Item | List price, per hour | A month (730 h), computed |
|---|---|---|
| HPC instance types (EFA) | ||
| hpc7a.96xlarge192 cores, 768 GiB, 300 Gbps | $8.5553 | $6,245.37 |
| hpc7a.12xlarge24 cores, 768 GiB, 300 Gbps | $8.5553 | $6,245.37 |
| hpc6id.32xlarge64 cores, 1,024 GiB, local NVMe | $6.77294 | $4,944.25 |
| Compute optimized | ||
| c6i.32xlarge128 vCPU, EFA | $6.464 | $4,718.72 |
| c7i.16xlarge64 vCPU, no EFA at this size | $3.3936 | $2,477.33 |
| c7g.16xlarge64 vCPU, AWS Graviton3, EFA | $2.7475 | $2,005.68 |
| c6gn.16xlarge64 vCPU, AWS Graviton2, 100 Gbps, EFA | $3.28 | $2,394.40 |
| Head node or login node | ||
| m7i.xlarge4 vCPU, 16 GiB, x86 | $0.2352 | $171.70 |
| m7g.xlarge4 vCPU, 16 GiB, AWS Graviton3 | $0.1904 | $138.99 |
USD, before tax. AWS Price List, eu-west-3, offer file published October 23, 2026, fetched October 26, 2026.
AWS Graviton instances run the same queues for less per hour when the code builds for arm64: a c7g.16xlarge costs 19.0% less than a c7i.16xlarge of the same 64 vCPU, computed. The same vCPU count is not the same number of cores: AWS's specifications give the c7i.16xlarge 32 cores of two threads each, and the c7g.16xlarge 64 cores of one thread. A code run one process per core, with simultaneous multithreading off, gets twice the cores on the c7g node. Whether it does the same work in the same hours is for a benchmark of the real jobs to say.
Shared storage: EBS, EFS and the FSx file systems
The SharedStorage section mounts Amazon EBS volumes, Amazon Elastic File System (Amazon EFS), Amazon FSx for Lustre, FSx for NetApp ONTAP or FSx for OpenZFS on every node. Storage the cluster creates is "managed": by default it is deleted with the cluster (DeletionPolicy Delete), unless set to Retain, or Snapshot for EBS. External storage, created outside the cluster, is never deleted by it.
Amazon FSx for Lustre is the file system built for HPC. Its default deployment type in ParallelCluster is SCRATCH_2, and the two families bill differently. Scratch file systems "are designed for temporary storage and shorter-term processing of data. Data isn't replicated and doesn't persist if a file server fails". Persistent ones replicate their data, and the same guide tells the storage classes apart: "For SSD and HDD-based file systems, data is automatically replicated within the same Availability Zone in which the file system is located. For Intelligent-Tiering file systems, data is replicated across multiple Availability Zones." SSD and HDD file systems bill by their throughput tier, since, in ParallelCluster's words, "You pay for the amount of throughput that you provision"; Intelligent-Tiering bills its throughput apart. A scratch, SSD or HDD file system can be linked to an S3 bucket, so the data lives in S3 and the file system only while it is needed; "Intelligent-Tiering file systems don't support linking to Amazon S3 data repositories" (Using data repositories with Amazon FSx for Lustre).
Logs and monitoring
Cluster logs stream to CloudWatch Logs by default, with a CloudWatch dashboard and alarms for the head node. The Monitoring section sets RetentionInDays to 180 by default and the log DeletionPolicy to Retain: the logs outlive the cluster. Detailed monitoring of the compute fleet is off by default; "There are added costs when this feature is enabled."
In short: A cluster bills as its parts: a head node and login nodes every hour, compute nodes only while they exist, storage by the GB-month it exists, and logs by the GB, so the settings that decide when each part exists decide the bill.
What AWS ParallelCluster is used for, and how it compares with AWS PCS
ParallelCluster's use is to stand up an HPC cluster with a scheduler users already know: simulations that span many nodes over EFA, parameter sweeps of independent jobs, genomics pipelines, rendering. AWS suggests building on it, for example "a genomics portal that automates an entire DNA sequencing workflow".
AWS also runs Slurm for you. AWS Parallel Computing Service (AWS PCS) "is a managed service that makes it easier to run and scale high performance computing (HPC) workloads ... using Slurm". The difference shows on the bill: with ParallelCluster the head node is an instance you pay for by the hour; with AWS PCS, its FAQs describe "an hourly controller fee based on the size of the managed Slurm controller", a node management fee per managed instance, and EC2 and storage on top. The pages read for this article publish no side-by-side comparison of the two, or with AWS Batch, which ParallelCluster no longer offers as a scheduler.
ParallelCluster's settings for the main kinds of HPC work, and the bill line each one moves
| Kind of work | Queue settings AWS documents | The line it moves |
|---|---|---|
| Tightly coupled simulations (MPI) | HPC instance types, Efa on, a placement group, one zone |
Compute: the most expensive hours, On-Demand only |
| Independent jobs (sweeps, batches) | Any instance type, Instances lists, no EFA |
Compute: Graviton or Spot queues can serve them |
| Data-heavy campaigns | FSx for Lustre linked to S3 | Storage: scratch for the campaign, S3 for the rest |
| Interactive work | Login nodes, Amazon DCV on the head node or login nodes | Compute: always-on nodes |
How AWS ParallelCluster pricing works
Compute: the hours of each node
Every node bills its instance's hourly price for the hours it exists. A head node m7i.xlarge costs $0.2352 per hour, $171.70 a month, computed; one hpc7a.96xlarge left running as a static node costs $6,245.37 a month, computed. The table of instances above lists the others with their monthly amounts.
Eight static hpc7a.96xlarge nodes
$49,962.95 a monthin Paris, 730 hours each, computed: what a queue with MinCount 8 bills whether or not a job runs.
Computed from the AWS Price List · eu-west-3 · Oct 23, 2026
Savings Plans apply to these hours like any EC2 hours. In Paris, the 1-year No Upfront Compute Savings Plan rate of an hpc7a.96xlarge is $8.0847 per hour, and the EC2 Instance Savings Plan rate $6.7373 per hour, against $8.5553 per hour On-Demand.
Storage: FSx for Lustre, EBS and EFS in Paris
FSx for Lustre bills "the average amount of storage provisioned for your file systems per month, measured in GB-months", with "no minimum fees or set-up charges", "prorated by the second" (FSx for Lustre pricing). The throughput tier is in the price of each GB:
| Item | List price | Unit |
|---|---|---|
| FSx for Lustre, SSD | ||
| Scratch (SCRATCH_2)200 MB/s per TiB baseline, not replicated | $0.162 | per GB-month |
| Persistent 1, 50 MB/s per TiB | $0.164 | per GB-month |
| Persistent 1, 200 MB/s per TiB | $0.342 | per GB-month |
| Persistent 2, 125 MB/s per TiB | $0.184 | per GB-month |
| Persistent 2, 250 MB/s per TiB | $0.279 | per GB-month |
| Persistent 2, 500 MB/s per TiB | $0.467 | per GB-month |
| Persistent 2, 1,000 MB/s per TiB | $0.844 | per GB-month |
| FSx for Lustre, HDD and Intelligent-Tiering | ||
| Persistent 1 HDD, 12 MB/s per TiB | $0.026 | per GB-month |
| Persistent 1 HDD, 40 MB/s per TiB | $0.086 | per GB-month |
| Intelligent-Tiering, Frequent AccessReplicated across zones; not linkable to S3 | $0.024 | per GB-month |
| Intelligent-Tiering, Infrequent AccessAfter 30 days without access | $0.0131 | per GB-month |
| Intelligent-Tiering throughputPer MBps provisioned, billed apart | $0.593 | per MiB/s-month |
| Backups | $0.053 | per GB-month |
| Other shared storage | ||
| Amazon EBS gp3Root and shared volumes | $0.0928 | per GB-month |
| EBS snapshotsWhat DeletionPolicy Snapshot keeps | $0.053 | per GB-month |
| Amazon EFS StandardSharedStorageType Efs, or a shared file system | $0.33 | per GB-month |
| Amazon S3 StandardFirst 50 TB a month | $0.024 | per GB-month |
USD, before tax. AWS Price List, eu-west-3, offer files published September 11, 2026, October 15, 2026 and October 23, 2026, fetched October 26, 2026.
So the same 12,000 GB costs $1,944.00 a month as a scratch file system and $10,128.00 as Persistent 2 at 1,000 MB/s per TiB, computed, if each exists the whole month.
Logs and data transfer
Logs and data transfer for AWS ParallelCluster in Paris (eu-west-3)
| Item | List price | Unit |
|---|---|---|
| CloudWatch Logs ingestion, StandardPer GB | $0.5985 | per GB |
| CloudWatch Logs ingestion, Infrequent AccessPer GB | $0.299 | per GB |
| CloudWatch Logs storagePer GB-month | $0.0315 | per GB-month |
| Between Availability ZonesPer GB, out of one zone and again into the other | $0.01 | per GB |
| Out to the internet, first 10 TB a monthPer GB, after 100 GB a month free | $0.09 | per GB |
USD, before tax. AWS Price List, eu-west-3, offer files published September 16, 2026 and October 7, 2026, fetched October 26, 2026.
In short: The tool is free; the hours of the head node and of every compute node, the GB-months of every volume and file system, and the GB of logs are what a cluster costs, at the prices of the instance types and storage tiers you choose.
Architecture patterns around AWS ParallelCluster, and what they cost
Four illustrative configurations in Paris, each priced before and after the levers of the next section, line by line from the AWS Price List: a queue whose nodes never stop, a file system kept between campaigns, a queue moved to Graviton, and interruptible jobs moved to Spot. None is a client case; every amount is computed, and each card lists its assumptions and what it leaves out. The EC2 patterns price the instances of a web application the same way.
Pattern 1 of 4 · Illustrative configuration
A simulation cluster that keeps its compute nodes on
A head node and a Slurm queue of 8 hpc7a.96xlarge nodes with EFA, all static (MinCount equal to MaxCount), running all month; then MinCount 0, so the nodes exist only while jobs run and for the default 10 idle minutes after, and a Compute Savings Plan on the head node, the one instance that never stops.
- Static nodes run, and bill $8.5553 an hour each, every hour the cluster exists, with or without a job.
- Dynamic nodes launch when jobs are queued and terminate after ScaledownIdletime (10 minutes by default) without a job; the head node, which never stops, is the part to commit.
The static queue ran 5,840 node-hours a month; the dynamic one runs 1,240, 155 hours a node, computed. The 10 idle minutes after each run add up to 40 node-hours, $342.21 a month, 3.2% of the bill with the levers, computed; setting ScaledownIdletime lower would trade them against more node launches.
With the levers: $39,419.26 a month less (78.5% less), computed.
The bills line by line, the assumptions and the sources
A simulation cluster that keeps its compute nodes on, before: All nodes static, all month Illustrative
8 static nodes, 730 hours each, used or not.
| Line | A month |
|---|---|
| Compute | $50,134.65 |
| Head node, m7i.xlarge1 instance × 730 h × $0.2352 /h | $171.70 |
| Compute nodes, hpc7a.96xlarge8 instances × 730 h × $8.5553 /h | $49,962.95 |
| Storage | $79.81 |
| Head node root volume (gp3)40 GB × $0.0928 /GB-mo | $3.71 |
| Shared EBS volume, /shared (gp3)500 GB × $0.0928 /GB-mo | $46.40 |
| Their root volumes (gp3)320 GB × $0.0928 /GB-mo | $29.70 |
| A month, computed | $50,214.46 |
A simulation cluster that keeps its compute nodes on, with the levers: Scaled to zero, head node committed Illustrative
Dynamic nodes, 155 hours each, and the head node on a Savings Plan.
| Line | A month |
|---|---|
| Compute | $10,738.78 |
| Head node, m7i.xlarge, 1-year Compute Savings Plan1 instance × 730 h × $0.17837 /h | $130.21 |
| Compute nodes, hpc7a.96xlarge8 instances × 155 h × $8.5553 /h | $10,608.57 |
| Storage | $56.42 |
| Head node root volume (gp3)40 GB × $0.0928 /GB-mo | $3.71 |
| Shared EBS volume, /shared (gp3)500 GB × $0.0928 /GB-mo | $46.40 |
| Their root volumes (gp3)320 GB × 155 h / 730 h × $0.0928 /GB-mo | $6.31 |
| A month, computed | $10,795.20 |
Assumptions
- Illustrative configuration in Paris (eu-west-3), not a client case.
- A head node m7i.xlarge with a 40 GB gp3 root volume, a 500 GB gp3 shared volume, and one compute resource of 8 hpc7a.96xlarge (192 cores each, EFA on, one cluster placement group), each with a 40 GB gp3 root volume; root volume sizes are illustrative (the default comes from the AMI).
- The jobs keep each node busy 150 hours a month, in 30 runs; after each run Slurm waits ScaledownIdletime (default 10 minutes) before it terminates the node, so each dynamic node exists 155 hours a month.
- A dynamic node's root volume is attached at launch, and EC2 deletes a root volume attached at launch when its instance is terminated, unless the AMI or the launch says otherwise (Preserve data when an instance is terminated); so it bills for the hours the node exists.
- The Compute Savings Plan is the 1-year No Upfront rate of the head node's On-Demand SKU, used every hour of the month. It is the Compute plan, not the cheaper EC2 Instance Savings Plan, which commits to one instance family in the Region: a move of the cluster to Graviton (pattern 3) changes the head node's family.
Not counted
- CloudWatch Logs, the DynamoDB table and the Route 53 hosted zone that ParallelCluster creates, and data transfer: small next to the nodes, and the same in both variants.
- Node launch time: a dynamic node bills from its launch, before its first job starts.
Sources
- Scheduling section (AWS ParallelCluster)
- HeadNode section (AWS ParallelCluster)
- Specifications for Amazon EC2 high-performance computing instances
- Amazon EC2 instance types by Region
- Slurm guide for multiple queue mode
- Preserve data when an instance is terminated
- Savings Plans types
USD before tax, 730 h a month. AWS Price List, eu-west-3, offer file published October 23, 2026, fetched October 26, 2026. Illustrative configuration, not a client case.
Pattern 2 of 4 · Illustrative configuration
A Lustre file system kept all month for two campaigns
12,000 GB of project data on an FSx for Lustre Persistent 2 file system, kept all month; then the data in Amazon S3 Standard, and a SCRATCH_2 file system of the same size created with the cluster for each of two 120-hour campaigns, and deleted with it.
- Persistent 2 at 250 MB/s per TiB bills $0.279 per GB-month for every hour it exists, between campaigns too.
- The data stays in S3 Standard ($0.024 per GB-month); a SCRATCH_2 file system ($0.162 per GB-month) is created for each campaign, its results exported to S3, then deleted with the cluster.
The scratch file system exists 240 hours a month instead of 730, and the data that stays between campaigns pays S3's price instead of Lustre's: 72.3% less, computed. The price is that scratch data is not replicated: results go back to S3 before the file system is deleted.
With the levers: $2,420.88 a month less (72.3% less), computed.
The bills line by line, the assumptions and the sources
A Lustre file system kept all month for two campaigns, before: Persistent 2 kept all month Illustrative
One persistent file system, 730 hours.
| Line | A month |
|---|---|
| Storage | |
| FSx for Lustre, Persistent 2 SSD, 250 MB/s per TiB12,000 GB × $0.279 /GB-mo | $3,348.00 |
| A month, computed | $3,348.00 |
A Lustre file system kept all month for two campaigns, with the levers: Scratch per campaign, data in S3 Illustrative
S3 all month, a scratch file system 240 hours.
| Line | A month |
|---|---|
| Storage | $927.12 |
| Amazon S3 Standard, the project data12,000 GB × $0.024 /GB-mo | $288.00 |
| FSx for Lustre, SCRATCH_2, during the campaigns12,000 GB × 240 h / 730 h × $0.162 /GB-mo | $639.12 |
| A month, computed | $927.12 |
Assumptions
- Illustrative configuration in Paris (eu-west-3), not a client case.
- 12,000 GB of project data (StorageCapacity 12,000 GiB, a multiple of 2,400 GiB as SCRATCH_2 and PERSISTENT_2 require), read by the jobs during two campaigns of 120 hours each a month. The capacity is billed as 12,000 GB-months, as AWS's FSx for Lustre pricing examples bill the smallest file system's 1,200 as "1,200 GB".
- Before: PERSISTENT_2, SSD, 250 MB/s per TiB, the throughput tier just above scratch's 200 MB/s per TiB baseline; no backups.
- With the levers: the data stays in S3 Standard (first 50 TB tier); a SCRATCH_2 file system linked to the bucket is created for each campaign and deleted after it (DeletionPolicy Delete, the default), so it exists 240 hours a month.
- A scratch file system does not replicate its data: what the jobs write must be exported to S3 before the file system is deleted.
Not counted
- S3 requests made by the imports and exports, and the compute nodes: the same jobs run in both variants.
- Data transfer between the bucket and the file system, in the same Region: no page read for this article prices it.
- The minutes each import takes before a campaign can start.
Sources
- SharedStorage section (AWS ParallelCluster)
- Deployment and storage class options for FSx for Lustre file systems
- Amazon FSx for Lustre pricing
USD before tax, 730 h a month. AWS Price List, eu-west-3, offer files published September 11, 2026 and October 15, 2026, fetched October 26, 2026. Illustrative configuration, not a client case.
Pattern 3 of 4 · Illustrative configuration
A throughput queue on x86 or on Graviton
2,000 instance-hours a month of loosely coupled jobs on c7i.16xlarge with an m7i.xlarge head node; then the same hours on c7g.16xlarge (AWS Graviton3) with an m7g.xlarge head node, since the head node must have the queue's architecture.
The bill falls by 19.0% less, computed, for the same instance-hours: the head node moves to Graviton with the queue, since a cluster has one architecture. If the jobs ran slower on Graviton, the hours would grow and eat into it: the benchmark comes first.
With the levers: $1,324.91 a month less (19.0% less), computed.
The bills line by line, the assumptions and the sources
A throughput queue on x86 or on Graviton, before: x86 (c7i.16xlarge) Illustrative
Intel nodes and head node.
| Line | A month |
|---|---|
| Compute | $6,958.90 |
| Head node, m7i.xlarge1 instance × 730 h × $0.2352 /h | $171.70 |
| Compute nodes, c7i.16xlarge10 instances × 200 h × $3.3936 /h | $6,787.20 |
| A month, computed | $6,958.90 |
A throughput queue on x86 or on Graviton, with the levers: Graviton (c7g.16xlarge) Illustrative
Graviton nodes and head node.
| Line | A month |
|---|---|
| Compute | $5,633.99 |
| Head node, m7g.xlarge1 instance × 730 h × $0.1904 /h | $138.99 |
| Compute nodes, c7g.16xlarge10 instances × 200 h × $2.7475 /h | $5,495.00 |
| A month, computed | $5,633.99 |
Assumptions
- Illustrative configuration in Paris (eu-west-3), not a client case.
- 10 nodes of 64 vCPU, 200 hours each a month: 2,000 instance-hours of independent jobs (parameter sweeps), with no EFA.
- The comparison is at equal vCPU, not equal cores: a c7i.16xlarge has 32 cores of two threads each, a c7g.16xlarge 64 cores of one thread (AWS's compute optimized specifications). A code run one process per core, with simultaneous multithreading off, gets twice the cores on the c7g node.
- The jobs take the same hours on both: an assumption, not an AWS figure. A benchmark of the real code decides; if it runs slower on Graviton, the hours grow, and if it runs one process per core, they may shrink.
- The code and its libraries build for arm64; the head node and the compute nodes use the ParallelCluster AMI of their architecture.
Not counted
- Root volumes, shared storage and logs: the same in both variants.
- The work of porting and testing the code on arm64.
Sources
- HeadNode section (AWS ParallelCluster)
- Scheduling section (AWS ParallelCluster)
- Specifications for Amazon EC2 compute optimized instances
USD before tax, 730 h a month. AWS Price List, eu-west-3, offer file published October 23, 2026, fetched October 26, 2026. Illustrative configuration, not a client case.
Pattern 4 of 4 · Illustrative configuration
Interruptible jobs on a Spot queue
1,000 instance-hours a month of jobs that checkpoint and can restart, on an On-Demand queue of c7i.16xlarge; then the same hours on a queue with CapacityType SPOT and the price-capacity-optimized strategy, the head node kept On-Demand.
The Spot hours would have cost $3,393.60 On-Demand, computed; their Spot price is not in the AWS Price List. HPC instance types cannot join this queue: none of them supports Spot.
No difference is computed: the Spot hours have no list price (AWS: up to 90% less than On-Demand).
The bills line by line, the assumptions and the sources
Interruptible jobs on a Spot queue, before: On-Demand queue Illustrative
Head node and compute nodes On-Demand.
| Line | A month |
|---|---|
| Compute | $3,565.30 |
| Head node, m7i.xlarge1 instance × 730 h × $0.2352 /h | $171.70 |
| Compute nodes, c7i.16xlarge4 instances × 250 h × $3.3936 /h | $3,393.60 |
| A month, computed | $3,565.30 |
Interruptible jobs on a Spot queue, with the levers: Spot queue Illustrative
Head node On-Demand, compute nodes on Spot.
| Line | A month |
|---|---|
| Compute | $171.70 |
| Head node, m7i.xlarge1 instance × 730 h × $0.2352 /h | $171.70 |
| Compute nodes, c7i.16xlarge on Spot1,000 instance-hours · On-Demand equivalent, as c7i.16xlarge: $3,393.60, computed | Not priced |
| Priced lines, a month, computed | $171.70 |
| + 1,000 Spot instance-hours, not priced (AWS: up to 90% less than On-Demand) | |
Assumptions
- Illustrative configuration in Paris (eu-west-3), not a client case.
- 4 nodes c7i.16xlarge, 250 hours each a month; the jobs write checkpoints and are requeued when a node is interrupted.
- HPC instance types (hpc6a, hpc6id, hpc7a, hpc7g, hpc8a) do not support Spot: a Spot queue uses other types.
- The head node stays On-Demand: it runs the scheduler and is not interruptible work.
Not counted
- The hours an interrupted job runs again from its last checkpoint.
- Root volumes, shared storage and logs: the same in both variants.
Sources
- Working with Spot Instances (AWS ParallelCluster)
- Specifications for Amazon EC2 high-performance computing instances
USD before tax, 730 h a month. AWS Price List, eu-west-3, offer file published October 23, 2026, fetched October 26, 2026. Illustrative configuration, not a client case.
Want the same levers on your own bill?
Get a free auditHow to reduce AWS ParallelCluster costs
Each lever below comes from AWS documentation, the last one from the Well-Architected Framework; their order is this article's: see what each cluster bills, remove what outlives its use, reshape the compute and the storage around the jobs, keep the traffic in one zone, commit only where the usage is steady, and look again:
- Lever 01,SeeSee what each cluster billsAlways, and first
- Lever 02,TrimDelete what a deleted cluster leaves behindAfter every deleted cluster
- Lever 03,TrimSet a retention on the cluster's logsEvery cluster that streams logs
- Lever 04,ReshapeLet idle compute nodes scale to zeroQueues that wait between jobs
- Lever 05,ReshapeSize the head node and the login nodes for their jobBefore the cluster is created
- Lever 06,ReshapeKeep HPC instances for tightly coupled jobsChoosing a queue's instance type
- Lever 07,ReshapeMove to Graviton where the code builds for arm64Code that builds and runs on arm64
- Lever 08,ReshapeRun interruptible jobs on Spot queuesJobs that checkpoint and can restart
- Lever 09,ReshapeUse scratch file systems for short-lived data, and S3 for the restData read during campaigns
- Lever 10,ReshapeProvision Lustre throughput for what the jobs readPersistent file systems
- Lever 11,RouteKeep a cluster in one Availability ZoneQueues over several zones
- Lever 12,CommitCommit only to the part that never stopsOnce the rest is done
- Lever 13,ReviewReview on a cadenceQuarterly to yearly, by share of the bill
Lever 01 · See
See what each cluster bills
No line of the bill is called ParallelCluster. Each cluster is a CloudFormation stack, so its resources are listed in one place: the head node, the compute fleet, the managed volumes and file systems. Cost Explorer then shows them under EC2 - Instances, EC2 - Other (the EBS volumes and snapshots), FSx, EFS and CloudWatch: "Instead of a single group for Amazon EC2 costs, Cost Explorer will group costs into EC2 - Instances and EC2 - Other" (Knowing the differences between Billing and Cost Explorer data). Storage the cluster mounts but did not create is not in the stack, and is easy to forget.
Lever 02 · Trim
Delete what a deleted cluster leaves behind
Managed storage is deleted with the cluster by default, but Retain keeps a volume or a file system, Snapshot keeps an EBS snapshot, and the logs are kept by default. Each keeps billing: a retained 12,000 GB Persistent 2 file system at 250 MB/s per TiB costs $3,348.00 a month, computed, with no cluster to use it.
Lever 03 · Trim
Set a retention on the cluster's logs
RetentionInDays is 180 by default, and 0 "will use the default CloudWatch log retention setting, i.e. never expire". Choose the retention the logs are needed for, and the Delete policy for clusters whose logs need not outlive them. Ingestion costs $0.5985 per GB in Paris; storage $0.0315 per GB-month.
Lever 04 · Reshape
Let idle compute nodes scale to zero
With MinCount at its default of 0, a queue has no node until a job needs one, and Slurm terminates each node ScaledownIdletime minutes after its last job. Static nodes make sense for a queue that is busy every hour, or with a Capacity Block, which requires them. Pattern 1 prices the difference on eight hpc7a.96xlarge: 78.4% less with this lever alone, computed.
Lever 05 · Reshape
Size the head node and the login nodes for their job
The head node runs the Slurm controller and, with the default Ebs shared storage, serves the shared directories over NFS; the jobs run on the queues' compute nodes, which, in the Slurm guide's words, become available "to run jobs" once they have "joined the cluster". Size it for that, knowing that its type cannot change without a new cluster, and that the user guide recommends EFS "for scale" when NFS from the head node becomes the bottleneck. Keep a login pool's Count to the users it serves.
Lever 06 · Reshape
Keep HPC instances for tightly coupled jobs
HPC instance types are built for jobs that exchange data over EFA; they are On-Demand or committed only, never Spot. Independent jobs do not need EFA and can run on any type, Graviton or Spot included. Within hpc7a, every size costs $8.5553 per hour in Paris: the size sets the cores, not the price.
Lever 07 · Reshape
Move to Graviton where the code builds for arm64
A cluster has one architecture: the head node's must be the compute nodes', and the login nodes' too. A Graviton cluster is a new cluster, with an arm64 head node. Pattern 3 prices it on the same hours; a benchmark of the real jobs says whether the hours stay the same.
Lever 08 · Reshape
Run interruptible jobs on Spot queues
A queue with CapacityType SPOT runs its jobs like any other queue: "The AWS ParallelCluster configured scheduler assigns jobs to compute resources in queues with spot instances in the same way it assigns jobs to compute resources in queues with on-demand instances" (Working with Spot Instances). The jobs must survive an interruption, announced two minutes ahead. In the Scheduling section, the price-capacity-optimized strategy requests "Spot Instances from the pools that we believe have the lowest chance of interruption in the near term", then the lowest-priced of those; lowest-price is the default.
Lever 09 · Reshape
Use scratch file systems for short-lived data, and S3 for the rest
AWS's advice for scratch is plain: "Use scratch file systems when you need cost-optimized storage for short-term, processing-heavy workloads." With the data kept in S3 and the file system linked to it, a scratch file system can live only as long as a campaign, as in pattern 2. Its data is not replicated: export the results first.
Lever 10 · Reshape
Provision Lustre throughput for what the jobs read
A persistent file system's throughput is its capacity times its tier: "For a 2.4 TiB file system, provisioning 50 MB/s/TiB of PerUnitStorageThroughput yields 120 MB/s of file system throughput." A file system sized for its data may already deliver what the jobs read at a lower tier; in Paris, Persistent 2 runs from $0.184 per GB-month to $0.844 per GB-month.
Lever 11 · Route
Keep a cluster in one Availability Zone
Several zones help a queue find capacity, at a cost AWS names: "added inter-AZ data transfer costs", $0.01 per GB in Paris out of one zone and again into the other. A scratch, SSD or HDD Lustre file system lives in one zone (Intelligent-Tiering replicates across zones), and EFA traffic cannot cross zones at all: a tightly coupled queue belongs in the file system's zone.
Lever 12 · Commit
Commit only to the part that never stops
A Savings Plan is "a commitment of using a specified amount of compute power (measured per hour) for a one or three year period" (What are Savings Plans?): it follows that it bills every hour of its term. In a cluster that scales to zero, only the head node, the login nodes and any static nodes run every hour: commit those, once the rest is done. The Compute Savings Plan applies "regardless of instance family", while the EC2 Instance Savings Plan is "a commitment to a specific instance family in a chosen AWS Region" (Savings Plans types), at $0.15512 per hour against $0.17837 per hour for an m7i.xlarge head node in Paris: the cheaper plan fits a head node whose family will not change. In pattern 1, the head node's plan is the last and smallest step.
Lever 13 · Review
Review on a cadence
Well-Architected sizes the cadence by the bill (COST10-BP01 Develop a workload review process): "core workloads or workloads with a value of over ten percent of the bill are reviewed quarterly or every six months, while workloads below ten percent are reviewed annually." For a cluster, queues, storage and logs drift with each campaign, and new instance types and storage tiers reach a Region over time: look again at each new campaign or ParallelCluster version too, and re-read the price list. Paris has hpc6id and hpc7a today, not the other HPC types.
In short: Scale the compute to the jobs first, keep storage only as long as the data needs it, choose Graviton or Spot where the jobs allow, and commit last, to the head node and whatever else truly never stops.
FAQ
How much does AWS ParallelCluster cost?
Nothing for the tool: you pay for the resources it creates. In Paris, a cluster's floor is its head node, $171.70 a month for an m7i.xlarge, computed, plus its volumes; the compute nodes, the shared storage and the logs come on top (How AWS ParallelCluster pricing works).
How do I make an AWS ParallelCluster queue scale to zero?
Leave MinCount at 0, its default: the queue then has only dynamic nodes, launched for jobs and terminated after ScaledownIdletime, 10 minutes by default (Let idle compute nodes scale to zero).
Can AWS ParallelCluster use Spot Instances?
Yes, per queue, with CapacityType SPOT, for jobs that can be interrupted. HPC instance types do not support Spot, so a Spot queue uses other types (Run interruptible jobs on Spot queues).
FSx for Lustre scratch or persistent?
Scratch for data the jobs need for a campaign and can rebuild from S3; persistent for data that must survive a file server failure or stays in use for months. In Paris, scratch is $0.162 per GB-month, Persistent 2 from $0.184 per GB-month (Storage in Paris).
AWS ParallelCluster or AWS PCS?
Both run Slurm. With AWS ParallelCluster you run the head node yourself and pay for it as an instance; AWS PCS manages the Slurm controller for an hourly fee and charges per managed node. AWS publishes no side-by-side comparison on the pages read for this article (What AWS ParallelCluster is used for).