
๐ฃ๐ฟ๐ผ๐๐ถ๐๐ถ๐ผ๐ป๐ฒ๐ฑ ๐ง๐ต๐ฟ๐ผ๐๐ด๐ต๐ฝ๐๐ (๐ ๐ถ๐/๐) vs ๐๐ข๐ฃ๐ฆ (Input/Output Operations Per Second)
๐ง Do you know why the ๐ฃ๐ฟ๐ผ๐๐ถ๐๐ถ๐ผ๐ป๐ฒ๐ฑ ๐ง๐ต๐ฟ๐ผ๐๐ด๐ต๐ฝ๐๐ (๐ ๐ถ๐/๐) and ๐๐ข๐ฃ๐ฆ (Input/Output Operations Per Second) are very important stuffs to consider based on requirements?
Correctly configuring these parameters based on our workload requirements is ๐ฆ๐ด๐ด๐ฆ๐ฏ๐ต๐ช๐ข๐ญ for optimizing performance and cost.
They are not the same thing. ๐ซฐ
๐ ๐ ๐ธ๐ช๐ฅ๐ฆ๐ณ ๐ฉ๐ช๐จ๐ฉ๐ธ๐ข๐บ (๐ฉ๐ช๐จ๐ฉ๐ฆ๐ณ ๐ต๐ฉ๐ณ๐ฐ๐ถ๐จ๐ฉ๐ฑ๐ถ๐ต) ๐ข๐ญ๐ญ๐ฐ๐ธ๐ด ๐ฎ๐ฐ๐ณ๐ฆ ๐ค๐ข๐ณ๐ด (๐ฅ๐ข๐ต๐ข) ๐ต๐ฐ ๐ต๐ณ๐ข๐ท๐ฆ๐ญ ๐ข๐ต ๐ต๐ฉ๐ฆ ๐ด๐ข๐ฎ๐ฆ ๐ต๐ช๐ฎ๐ฆ, ๐ธ๐ฉ๐ช๐ค๐ฉ ๐ช๐ด ๐ถ๐ด๐ฆ๐ง๐ถ๐ญ ๐ง๐ฐ๐ณ ๐ญ๐ข๐ณ๐จ๐ฆ, ๐ค๐ฐ๐ฏ๐ต๐ช๐ฏ๐ถ๐ฐ๐ถ๐ด ๐ด๐ต๐ณ๐ฆ๐ข๐ฎ๐ด ๐ฐ๐ง ๐ต๐ณ๐ข๐ง๐ง๐ช๐ค.
โข ๐ฃ๐ฟ๐ผ๐๐ถ๐๐ถ๐ผ๐ป๐ฒ๐ฑ ๐ง๐ต๐ฟ๐ผ๐๐ด๐ต๐ฝ๐๐ (๐ ๐ถ๐/๐): It refers to the data transfer speed, measured in mebibytes per second (MiB/s), for the EBS volumes attached to our cluster's data nodes. It's most relevant for workloads that involve large, sequential I/O operations, such as: โข Indexing large documents or log files. โข Bulk data ingestion. โข Streaming large amounts of data.
โข ๐๐ข๐ฃ๐ฆ (๐๐ป๐ฝ๐๐/๐ข๐๐๐ฝ๐๐ ๐ข๐ฝ๐ฒ๐ฟ๐ฎ๐๐ถ๐ผ๐ป๐ ๐ฃ๐ฒ๐ฟ ๐ฆ๐ฒ๐ฐ๐ผ๐ป๐ฑ): It measures how many separate read and write operations a storage volume can handle per second. This metric is crucial for workloads characterized by small, random, and frequent I/O requests, such as: โข High-volume, low-latency queries. โข Transactional systems. โข Frequent updates to small documents.
Let's look at the analogy: Train vs Scooters --> ๐๐ถ๐ด๐ต ๐ง๐ต๐ฟ๐ผ๐๐ด๐ต๐ฝ๐๐ is like a large cargo train. ๐ It's ideal for moving a massive amount of bulk goods (large data files) from point A to point B in a single, efficient trip.
--> ๐๐ถ๐ด๐ต ๐๐ข๐ฃ๐ฆ is like a fleet of delivery scooters. ๐ต Each scooter carries a small package (a small I/O request), but collectively, they can make thousands of individual and quick deliveries across a city, handling numerous, random requests rapidly.
๐ฅ More descriptively in-ease: Imagine our data storage is a restaurant.
--> IOPS: The Number of Orders the Kitchen Can Handle. It's like the total number of separate orders our kitchen can process per hour.
* The amount of food a delivery car can fit in a single trip is the I/O Size.
* The number of trips the car can make per hour is the IOPS.
* The total food delivered per hour (I/O Size ร IOPS) is the Throughput.
Now, think of that same restaurant's catering service. They get one massive order for a 300-person wedding. This is just one order, but the delivery car needs to be a huge van to carry all that food at once. The total volume of food moved in that single trip is enormous. This is High Throughput. It's not about the number of orders, but the total size of the delivery.
--> High Throughput is like having a large catering van that can deliver a huge amount of food over the course of an hour, because it can carry so much on each trip.
Suppose, the Restaurant can handle 300 orders at a time which is the IOPS. And each IO operation / delivery man / delivery vehicle have maximum 80 items of foods.
The fact that the restaurant can handle 300 separate orders per hour is its IOPS. It's a measure of how many tasks it can process in a given time. The "80 items of food" that a delivery vehicle can carry is not the throughput. It is the size of a single I/O operation (we can call it the "I/O Size"). Throughput is the total amount of food delivered over time.
Let's use your numbers to make it clear:
- If a delivery van can carry 80 items (I/O Size)...
- ...and it is fast enough to make 10 trips per hour (IOPS)...
- ...then the Throughput of your delivery system is 80 items/trip ร 10 trips/hour = 800 items per hour.

IOPS = (ReadThroughput + WriteThroughput) / BlockSize
Throughput = (Read IOPS + Write IOPS) x BlockSize
Throughput = IOPS ร I/O Size
So, to summarize:
- IOPS: How many trips can you make per hour? (e.g., 10 trips/hour)
- I/O Size: How much can you carry on each trip? (e.g., 80 items)
- Throughput: What is the total amount delivered per hour? (e.g., 800 items/hour)
When to Prioritize Which:
Prioritize High Throughput for:
- Log Analytics: Ingesting large, continuous streams of log data.
- Bulk Indexing: Loading a large dataset into Elasticsearch for the first time.
- Snapshot and Restore: Backing up or restoring an entire index or cluster.
Prioritize High IOPS for:
- E-commerce Search: Handling a high volume of concurrent user searches.
- Real-time Applications: Systems that require instant read/write access to small documents.
- Frequently Updated Data: When individual documents are updated often.
By understanding the nature of our workloadโwhether it involves moving large chunks of data or handling numerous small transactionsโyou can choose the right balance of Throughput and IOPS to build a cost-effective and high-performing Elasticsearch cluster.