Skip to content
Calcrivo

Firehose Buffer Calculator

Work out which Firehose buffer hint fires first, the resulting delivery latency and object size, and the 5 KB record rounding cost.

Inputs

records/s
KB

Firehose rounds each record up to the next 5 KB for billing.

MB
s
%
USD
USD

Delivery Latency

5s

Buffer Hint That Fires First

Buffer size — it fills before the interval elapses

Objects Delivered per Hour

703

Average Object Size

5.0MB

Billed Ingest per Month

12,359.6GB

Estimated Monthly Cost

$429.50

Step by step

  1. Values used

    Records per second = 1,000 records/s; Average record size = 1 KB; Buffer size hint = 5 MB; Buffer interval hint = 300 s; Compressed size as a share of raw = 25 %; Firehose ingestion price per GB = 0.0290 USD; Destination storage price per GB-month = 0.0230 USD

  2. Firehose Buffer

    time to fill = buffer size MB ÷ throughput MB/s; delivery latency = min(time to fill, buffer interval); average object = throughput × delivery latency.

  3. 5 KB record rounding

    billed ingest GB = records/s × ceil(record KB ÷ 5) × 5 × seconds per month ÷ 1,048,576.

  4. Delivery Latency

    = 5 s

  5. Buffer Hint That Fires First

    = Buffer size — it fills before the interval elapses

  6. Objects Delivered per Hour

    = 703

  7. Average Object Size

    = 5.0 MB

  8. Billed Ingest per Month

    = 12,359.6 GB

  9. Estimated Monthly Cost

    = 429.50

How it works

Firehose flushes when either hint is satisfied, whichever comes first, so on a busy stream the size hint dictates latency and on a quiet one the interval does. That single choice sets both your end-to-end freshness and your destination object size, and small objects are what make Athena and Spark queries slow. Billing rounds every record up to 5 KB, so 1 KB records cost five times what their raw volume suggests — confirm the current per-GB rate for your region. Buffer settings are the one Firehose knob that trades latency against query performance and cost simultaneously: a 1 MB buffer gives fresh data and thousands of tiny files, while a 128 MB buffer gives efficient Parquet objects and minutes of lag.

Formulas

Firehose Buffer

time to fill = buffer size MB ÷ throughput MB/s; delivery latency = min(time to fill, buffer interval); average object = throughput × delivery latency.

buffer size hint
1-128 MB of buffered data that triggers a flush
buffer interval hint
60-900 s that triggers a flush even if the buffer is not full
billed KB
Each record rounded up to the next 5 KB before the per-GB charge

5 KB record rounding

billed ingest GB = records/s × ceil(record KB ÷ 5) × 5 × seconds per month ÷ 1,048,576.

Frequently Asked Questions

How is Firehose Buffer calculated?

time to fill = buffer size MB ÷ throughput MB/s; delivery latency = min(time to fill, buffer interval); average object = throughput × delivery latency. Firehose flushes when either hint is satisfied, whichever comes first, so on a busy stream the size hint dictates latency and on a quiet one the interval does. That single choice sets both your end-to-end freshness and your destination object size, and small objects are what make Athena and Spark queries slow. Billing rounds every record up to 5 KB, so 1 KB records cost five times what their raw volume suggests — confirm the current per-GB rate for your region.

Why does Firehose Buffer matter?

Buffer settings are the one Firehose knob that trades latency against query performance and cost simultaneously: a 1 MB buffer gives fresh data and thousands of tiny files, while a 128 MB buffer gives efficient Parquet objects and minutes of lag.

What values do I need to enter?

This calculator takes 7 inputs: Records per second, Average record size, Buffer size hint, Buffer interval hint, Compressed size as a share of raw, Firehose ingestion price per GB, Destination storage price per GB-month. The pre-filled defaults are a realistic starting point — replace them with figures from your own environment for a result you can act on.

What object size should I aim for?

For Athena, Spark or Redshift Spectrum, objects of roughly 128 MB or more read far more efficiently than many small files. If freshness forces a small buffer, compact the output later with a scheduled job rather than fighting the buffer hint.

Does data transformation change the buffer behaviour?

Yes. A Lambda transformation applies its own buffering before delivery, and the billed ingest is measured on the data Firehose receives, not on the smaller output your transformation produces. Dropping records in a transform does not reduce the ingest charge.

You might also need