Hardware Basics #9: Reading Cloud Instance Specs — Choosing to Match the Workload

5 min read

In #8 we said that using the cloud as IaaS means picking an instance type yourself. This final post is about that choice. A name like c5.xlarge looks like a cipher at first, but if you’ve followed this series, every part of it maps to the four resources from #1. We’ll close the series by reading a spec sheet and picking a type that fits the workload.

Where this post sits in the Hardware Basics series:

Dissecting an instance name #

AWS instance names follow a rule. Take c5.xlarge — it splits into three pieces.

Dissecting c5.xlarge
c           5            xlarge
family      generation   size
(purpose)   (which gen)  (how big)
  • Family — which resource the type leans toward (c is compute-optimized)
  • Generation — which generation (higher is newer, generally faster and more efficient)
  • Size — how many resources (largexlarge2xlarge grows)

Just reading the name reveals the character: “latest-generation, compute-leaning, mid-size.” Other clouds use different notation, but the structure of splitting by family and size is similar.

Family — which resource it leans toward #

The family shows which of the four resources from #1 it leans toward. At the same vCPU count, the memory ratio and storage profile change.

FamilyCharacterLeaning resourceSuited workload
tburstable / generallow by default, brief bursts as neededsmall scale, low traffic
mgeneralbalanced vCPU and memorygeneral web / app servers
ccompute-optimizedhigh CPU ratiocompute-heavy, batch
rmemory-optimizedhigh memory ratiodatabases / caches
istorage-optimizedfast local NVMebulk / high IOPS

The c family has more vCPU relative to memory; the r family the opposite. Which resource becomes the bottleneck — the CPU from #2 or the memory from #3 — is what decides the family.

Size — multiples within the same family #

The size sets the amount of resources within a family. Each step up roughly doubles vCPU and memory, and the price with it.

SizevCPUMemoryPrice
large2baselinebaseline
xlarge42xabout 2x
2xlarge84xabout 4x

Recall from #2 that a vCPU usually corresponds to one hyper-thread, so xlarge’s 4 vCPUs is roughly 2 physical cores.

Reading the spec sheet by the four resources #

At the end of the day, an instance’s spec sheet is nothing more than this series’ four resources. Map each item to the post that covered it and the spec sheet falls into place.

Spec-sheet itemWhat it isCovered in
vCPUcompute capacity measured in hyper-threads#2
Memory (GiB)the amount of working space#3
StorageEBS-only or local NVMe#4 , #5
Network bandwidthmaximum Gbps#6

Notations like “EBS-optimized” or “up to 10 Gbps” now make sense too. The former means extra bandwidth is reserved for network-attached block storage in #5; the latter is the NIC ceiling of #6.

Choosing by workload #

Each workload has a different resource that becomes the bottleneck. Picking the family that leans toward that resource is the starting point.

WorkloadMain bottleneckRecommended family
General web / app serverbalancedm (general)
Compute-heavy batch / encodingCPUc (compute)
Database / in-memory cachememoryr (memory)
Bulk / high-IOPS storagestoragei (storage)
Small scale, low trafficlow by defaultt (burstable)

The order for choosing #

The order follows the bottleneck principle from #1.

  1. Decide the bottleneck resource. See which of CPU / memory / storage / network this workload is most sensitive to.
  2. Pick the family. Choose the family that leans toward that resource.
  3. Pick the size. Set it to the vCPU and memory you need. Start small.
  4. Measure and adjust. Under real load, see which resource hits its limit first and change the size or family.

The key is not to size up based on a guess. Starting small and growing through measurement beats sizing big upfront and bleeding cost.

Common pitfalls #

“Just take a big one to be safe” #

The most common waste. Most instances have resources to spare most of the time. Starting small and growing by measurement saves cost.

“I chose by vCPU count alone” #

At equal vCPU, the memory ratio differs by family. Put a database on the c family and memory runs short first, spilling into the swap of #3.

“I ran a steady load on burstable (t)” #

As #2 noted, the t family is throttled once credits run out. It doesn’t fit workloads that use CPU steadily.

“Pick once and you’re done” #

Workloads change. Reviewing the type periodically against measured numbers prevents over- and under-provisioning.

Wrap-up — closing the series #

What we covered:

  • An instance name dissects into family (purpose), generation, size.
  • The family shows which of the four resources it leans toward (m, c, r, i, t); the size sets the amount.
  • The spec sheet’s vCPU, memory, storage, and network are exactly the resources from #2, #3, #4, and #6.
  • The order for choosing is bottleneck resource → family → size → measure and adjust. Start small and grow by measurement.

Over nine posts we went from four resources to a cloud instance spec sheet. Now “slow” and “expensive” are things to diagnose rather than guess at.

Next — on to AWS #

If this series was about reading a spec sheet, actually launching and operating an instance is the job of the AWS series. Set up your account and region in AWS Basics, launch this post’s instance directly in EC2 and VPC in AWS Intermediate, and connect it to storage (S3). That’s how hardware knowledge turns into real-world operations.

X