Urgent.News

What's breaking now, across thousands of outlets.

Tech

At the edge, the number that matters is memory - not throughput (specially in Ramageddon)

We rebuilt LF Edge eKuiper in Rust and ran it against eKuiper, Telegraf and Redpanda Connect on five real MQTT workloads — one core, 1 GB of memory, and output checked message-by-message. The most important result wasn't speed. I-Dacs Labs Engineering · ~16 min read Most stream-processing benchmarks you'll read optimize for one number: peak throughput on a big server. That number is close to…

The headline of the article emphasizes that memory usage, rather than throughput, is the key metric when evaluating stream processing engines in resource-constrained environments like industrial gateways and embedded devices. In such scenarios, the engine must keep memory usage bounded even when traffic grows, as opposed to focusing solely on peak throughput.

To test this hypothesis, the author built a benchmark using LF Edge eKuiper and compared it to other stream processors like Telegraf and Redpanda Connect. The benchmark ran eKuiper against these engines on five real MQTT workloads, measuring message-by-message output to ensure correctness.

The most important result of the benchmark was not the speed, but the memory usage of each engine. The author found that rekuiper, the Rust-based engine they built, maintained memory usage between 5 and 10 MB across all workloads, while the Go-based engines consumed half a gigabyte to a full gigabyte, or failed altogether. This significant difference in memory usage is not due to the language choice, but rather the engine's design.

Rekuiper's memory efficiency comes from three design choices: bounded queues with real backpressure, incremental window aggregation, and an offline sink cache that spills instead of dropping records. Bounded queues ensure that messages are either delivered to all subscribers or rejected, preventing half-delivered data. Incremental window aggregation keeps memory usage proportional to the number of devices rather than the number of messages, making it safe for constrained devices.

The offline sink cache handles intermittent uplinks by queuing records in memory and disk until the disk budget is exhausted, ensuring no data is silently lost. These design decisions demonstrate that memory management is a crucial aspect of stream processing engines, even in environments where throughput is not the primary concern.

Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.

Read the original at dev.to →

More in Tech

The Contagion of Fear

  • Students spread panic by warning of computer virus
  • AI expert Jacob Coxon claims 10% AI killing humans risk
  • Fear of AI driven by experts' speculation over reality

API Rate Limiting: What Actually Breaks When You Get It Wrong

Most teams add rate limiting to their API as an afterthought — usually right after something has already gone wrong. A scraper hammers an endpoint, a client integration goes into a retry loop, or a…

  • Simply setting a single request limit is insufficient as all requests don't have equal costs.
  • Centralize rate limit counters across multiple instances to prevent overloading the system.

More from Sunday 13 September →