A Beginner’s Guide to Understanding RPUs in AWS Redshift Serverless, Let’s go!
Introduction
When you open the AWS Redshift Serverless Pricing page, you see the term "RPU" everywhere, but you might not know how much to set it to fit your current workload, and what the final bill will look like. Today, let's decode this number together.
Normally, when using Provisioned Redshift, we have to choose the Node type and the number of nodes ourselves, which can be quite a headache. However, with Serverless, AWS eliminates all of that, leaving only one number we need to set: the RPU. It sounds much easier, but the follow-up question is, what exactly is this number, and how do we know how much to set so it's just right and we don't overpay unnecessarily?
What exactly is RPU?
Redshift Processing Unit (RPU)
Simply put, RPU is the unit of compute capacity that Redshift Serverless uses to measure processing power. 1 RPU provides 16 GB of memory, along with compute and I/O that scale proportionally. We don't have to configure memory and compute separately like in Provisioned mode. A single RPU number determines both simultaneously.
What we can actually set is called the "Base capacity," which is the RPU level our Workgroup runs at by default. When there's a query that requires more resources, Redshift will automatically scale up and then scale back down to the base once the job is done. Currently, the configurable range is very wide, from 4 up to 1024 RPUs (depending on the Region; some Regions don't yet support the lowest values, and if you are worried about RPUs scaling too much, you can set limits as well).
A simple billing formula you must remember
Serverless compute is billed per-second, with a minimum of 60 seconds every time the Warehouse is invoked. If no queries are running, you pay nothing. The formula behind everything is:
Cost = RPU x Active hours x Rate per RPU-hour
If you are in US East (N. Virginia), the On-demand rate is $0.375 per RPU-hour. This number can change depending on the Region and over time. I recommend checking the actual Pricing page before estimating a real budget; don't just use this number directly.
Let's look at a real example from the AWS Pricing page itself. Suppose you have a job running with 128 RPUs 13 times a day, for 10 minutes and 30 seconds each time. The total active time for the day is 8,190 seconds (2.275 hours). Plugging this into the formula yields exactly $109.20 per day. Or consider a more complex example: a Dashboard app with a Base set to 64 RPUs, but during the morning and afternoon, heavy querying causes it to scale up to 192 RPUs and 128 RPUs respectively. Totalling the whole day gives 1,344 RPU-hours, amounting to $504 per day.
The interesting point from the second example is that the number that truly determines the cost isn't just the Base RPU, but rather the “area under the curve” of RPUs multiplied by the active time. Two Workgroups with the exact same Base setting could have vastly different bills if they scale up differently.
How do you know how many RPUs to set?
This is where most people get stuck. AWS provides rough guidelines based on the project phase. If it's a new project and you don't yet know the exact usage pattern, it's recommended to start with the lowest Base RPU value in your zone (around 4 to 24 RPUs). Then, observe if queries are slow or if there's any spilling to disk. If you encounter issues, gradually increase the Base step-by-step.
Once the project starts to grow, it's recommended to move to a Base of 32 RPUs and enable AI-driven scaling with a Price-performance target of 50, also known as Balanced, because AI-driven scaling requires a minimum Base of 32 RPUs to be enabled. For a stable workload that has been running for a while, it's recommended to start directly with AI-driven scaling at Target 50, then adjust it towards 75-100 if it's still slow, or down towards 25 if you feel you're paying more than necessary.
If you want rough numbers based on the data size a query scans, AWS recommends the following: 32 RPUs can handle queries scanning around 100 GB, 64 RPUs can handle around 250 GB, and 128 RPUs can handle around 500 GB. But keep in mind that this is just a starting point for comparison, as real requirements also depend on the query pattern—including Joins, Aggregations, or the number of columns, not just the data size alone.
Common misconception: Setting a high RPU doesn't always mean it's more expensive
I think this is the point that confuses people the most 😆. Instinctively, we think that the higher the RPU is set, the more expensive it will be. But in reality, we pay based on RPUs multiplied by time, not just RPUs alone. Look at this example: The exact same query running at 32 RPUs takes 60 minutes, while running at 128 RPUs takes only 15 minutes. Both scenarios cost exactly the same: $11.52.
Therefore, setting the RPU too low doesn't always mean you'll save money if it causes queries to take so long that the total RPU-hours are the same. Plus, you might encounter query spilling to disk, which is 5 to 10 times slower than operating in memory. Real savings only happen when the workload truly requires fewer resources, not just by arbitrarily setting a low value.
When should you use Provisioned Reserved Instances instead of Serverless?
Serverless isn't always the cheapest option. If your workload is highly stable, processing the same volume 24 hours a day, 7 days a week with very little variability—like an IoT system continuously receiving data—a Provisioned cluster with a 3-year Reserved commitment might actually be cheaper than Serverless. This is because we aren't utilizing the on-demand flexibility of Serverless at all.
Let's look at a price comparison between an 8 RPU Serverless setup and a 4-Node Provisioned cluster that provides equivalent memory. If both use On-demand pricing, Serverless is about 50% cheaper. But if you reserve the Provisioned cluster for 1 year with No Upfront, the prices become very close, with only about a 5% difference. And if you reserve for a full 3 years, Provisioned becomes up to 35% cheaper than Serverless.
But the main point is, a 3-year reservation is a very long-term commitment, and technology changes rapidly every year. Therefore, you should be absolutely certain that your workload will remain stable like this for a long time before making a decision.
Another point I'd like to bring up here is Cold starts. Even though Serverless doesn't charge during idle time, if the Workgroup is inactive until it scales down to zero, the Warehouse has to spin back up when a new query comes in. Tests from various sources often show an increased latency of about 10 to 30 seconds before it returns to normal speed (Note: this isn't an official number directly from AWS; it's from third-party testing). If it's a nightly batch job with no one waiting for the result, an extra 10-30 seconds is no big deal. But if it's a dashboard with people staring at a loading screen, you should test this thoroughly before fully committing to Serverless. Setting up small queries to run periodically to "keep warm" can help with this. A Provisioned cluster that runs constantly won't face this issue at all because it doesn't have an idle state that scales down to zero like Serverless.
In Summary
If you are starting a new project or don't have a clear usage pattern yet, I recommend starting with Serverless and setting a low Base RPU first. Then, observe and adjust it upwards based on reality. There's no need to hastily guess a high RPU in advance, as you risk paying more than necessary for no reason. If the project has grown and you want consistent performance without having to manually adjust RPUs, AI-driven scaling at Target 50 is the best answer.
However, if your workload is truly stable-running the exact same tasks 24/7 with no peaks or idle times, you should try comparing prices with a 3-year Reserved Provisioned instance first, as there's a high chance it will actually be cheaper than Serverless.
Finally, don't forget that the rates and the configurable RPU ranges can change over time as AWS updates them. Before doing serious budget estimations, I recommend always going back to check the Pricing page again. 🚀
ref:
https://aws.amazon.com/redshift/pricing/ https://docs.aws.amazon.com/redshift/latest/mgmt/serverless-billing.html https://repost.aws/articles/ARPo2EYjL6ST-Cr9ysyPp07w/how-should-i-size-amazon-redshift-for-my-project













Top comments (0)