StreamKernel · Performance Analysis · May 2026

We Are Not Competing
With Flink.
Here's Why That Matters.

How a single JAR on a laptop produced sub-millisecond internal pipeline latency while published Flink/Spark benchmarks show the real cost of distributed exactly-once execution — and why the comparison is really about deployment model, not replacing Flink.

Steven Lopez · IntuitiveDesigns StreamKernel v0.2.0 i9-8950HK · No GPU · Single Node

A Fair Question From a Builder Who's Been There

When a senior engineer and open-source contributor who had previously built a competing streaming pipeline project reviewed StreamKernel's capability matrix, the response was direct:

"What's your ICP? I don't see how you beat Flink/Spark streaming pipelines."

— Senior Engineer, Open-Source Streaming Contributor

It's the right question. The question came from someone who had built something in this exact space. So this article is not a marketing response — it's a technical one, with cited sources, disclosed measurement boundaries, and honest caveats.

Framing Up Front

StreamKernel does not compete with Apache Flink at petabyte-scale distributed compute. Flink is a distributed stream processing engine built for multi-node clusters. StreamKernel is a single-JVM, transport-agnostic event pipeline kernel with in-process AI inference. The ICP is different. The deployment model is different. But the single-node numbers — even on a laptop — are worth examining carefully.

What a Laptop Actually Produced

All StreamKernel figures below are from a live run on May 27, 2026, using profile streamkernel_kafka_exactly_once_baseline_10m. Prometheus metrics, GC logs, and a full run manifest are preserved as benchmark evidence.

Hardware: Intel i9-8950HK · 12 threads · 32GB RAM · No GPU · Single local Kafka broker
Transactional EOS Confirmed

The May 27 run is verified transactional Kafka EOS at the sink boundary: transactionalId=streamkernel-eos-bench-1, acks=-1, enable.idempotence=true, and the Kafka client log confirms a transactional producer with InitProducerId, transaction coordinator discovery, and producer epoch assignment. Note: consumers must set isolation.level=read_committed to observe exactly-once semantics end-to-end.

// EOS Evidence — May 27 run log transactional.id = streamkernel-eos-bench-1
acks = -1 (all in-sync replicas)
enable.idempotence= true
// TransactionManager: Invoking InitProducerId for the first time...
// ProducerId set to 0 with epoch 5
// TransactionCoordinator discovered: localhost:9092
621K
Avg EPS · Transactional EOS
Sustained over 10 min · 372.5M records written
820K
Peak EPS · Transactional EOS
Peak burst in a 5-second window
0.0ms
Reported P99 · ms precision
At BENCH logger display resolution. Sub-millisecond; not literal zero.
Zero
Dropped Records
100% pipeline integrity across 372.5M records · Prometheus confirmed
Measurement Precision Note

The BENCH logger reports latency at millisecond display resolution. P99 reporting as 0.0ms means latency was below the logger's millisecond display threshold — not literal zero processing latency. GC-driven MAX spikes (up to 81ms) from G1 Evacuation pauses are visible in the raw log and are fully expected on a 32GB laptop heap.

// Final windows — May 27, 2026 run BENCH PROC_EPS=758117.1 LAT_MS[P50=0.0 P99=0.0 MAX=35.6] DROPPED=0 PROC_TOTAL=362100000 BENCH PROC_EPS=741404.5 LAT_MS[P50=0.0 P99=0.0 MAX=0.4] DROPPED=0 PROC_TOTAL=365800000 BENCH PROC_EPS=703266.2 LAT_MS[P50=0.0 P99=0.0 MAX=64.9] DROPPED=0 PROC_TOTAL=351300000 // Graceful shutdown after 600s. 372.5M total records. Pipeline Stopped.

What the Research Actually Says About Flink

The Flink comparison numbers aren't from a vendor whitepaper. They come from a published benchmark paper in the International Journal of Emerging Trends in Computer Science and Information Technology, March 2026.

§
Battula, S. K. Y. — "Distributed Stream Processing for Real-Time Healthcare-Motivated Analytics in Multi-Cloud: A Semantics-Aligned Benchmark of Kafka-Centric Pipelines with Flink and Spark Structured Streaming." IJETCSIT, Vol. 7, Issue 1, pp. 254–266, March 6, 2026. DOI: 10.63282/3050-9246.IJETCSIT-V7I1P138 · Full paper →

The benchmark ran on 12 × m6i.4xlarge nodes (16 vCPU, 64GB RAM each) — 192 vCPUs total — across AWS and Azure, with a dedicated 6-broker Kafka cluster in KRaft mode. The author disclosed approximately $14,200 in cloud infrastructure spend for the campaign. At 50,000 events/sec under exactly-once semantics:

74ms
Flink P99 SLA-A
Alert delivery latency · event_time → Kafka commit · 12-node AWS cluster · 50K eps EOS
231ms
Spark P99 SLA-A
Micro-batch trigger is the latency floor · 12-node AWS cluster · 50K eps EOS
192
vCPUs in benchmark
12 × m6i.4xlarge · 16 vCPU each · Plus 6 dedicated Kafka broker nodes
$14.2K
Disclosed cloud spend
Author's disclosed infrastructure cost across the full benchmark campaign
Important: Measurement Boundaries Differ

The IJETCSIT paper's latency metric is SLA-A alert delivery latency — measured from event_time to Kafka sink commit, including transaction commit overhead. StreamKernel's BENCH logger measures internal pipeline processing latency at millisecond display resolution. These are not identical measurement boundaries. The comparison below is directional and architectural — not a controlled apples-to-apples benchmark on equivalent hardware.

Latency and Throughput — With Honest Caveats

Latency Under Exactly-Once-Oriented Execution — Measurement Boundaries Differ
StreamKernel: internal pipeline latency at ms display resolution from BENCH logs (May 27, 2026). Flink/Spark: SLA-A alert delivery latency (event_time → Kafka commit) from Battula, IJETCSIT 2026, 12-node AWS cluster at 50K eps. Directional comparison only.
250ms 200ms 150ms 100ms 50ms <1ms reported P99 StreamKernel 1 node · laptop · internal latency 74ms P99 SLA-A Apache Flink 1.18 12 nodes · 192 vCPU · AWS 231ms P99 SLA-A Spark Structured SS 3.5 12 nodes · 192 vCPU · AWS † Measurement boundaries differ — see note above. Directional comparison only.
Throughput Context — Not a Single-Node Flink Ceiling
StreamKernel: live run May 27, 2026, one 12-thread laptop, transactional Kafka producer run. The IJETCSIT paper reports Flink Workload A results at a 50K events/sec Tier M workload, with Table 2 showing approximately 121K EPS in the AWS colocated run — on a 12-node / 192-vCPU benchmark environment, not a single-TaskManager test and not a maximum-throughput ceiling. These are not equivalent measurement conditions.
Single-node throughput comparison — EOS semantics 621K avg / 820K peak eps STREAMKERNEL · i9-8950HK · 12 threads · Transactional EOS · May 2026 ~121K EPS · Flink Workload A, Tier M (IJETCSIT Table 2) · 12-node / 192-vCPU · not a ceiling The paper was not designed to establish Flink's throughput ceiling. Flink at cluster scale processes far beyond this workload point.

Why the Deployment Model Is the Real Differentiator

The performance numbers are interesting. The deployment comparison is where StreamKernel's ICP becomes undeniable for the environments it targets.

FLINK (EOS) — TYPICAL PRODUCTION ZooKeeper/KRaft Kafka Brokers 3+ for txn durability Checkpoint Store S3 / HDFS JobManager TaskManagers × N Inference via custom UDF / external service Higher assembly and operational burden; possible to air-gap vs STREAMKERNEL (EOS) streamkernel-app.jar 81 MB · Single JVM · Java 21 ONNX / DJL MLflow Gov. OPA Policy Multi-sink · Provenance · Per-event DLQ Designed for single-runtime offline deployment Operational Complexity HIGHER Operational Complexity MINIMAL In-Process Inference Custom UDF / external service In-Process Inference Native · First-class kernel primitive

Flink can be deployed offline. Kafka can be deployed offline. The distinction is not capability — it is the number of components you need to assemble, operate, and secure to achieve it. StreamKernel collapses that surface to a single JVM with inference, governance, policy, and provenance as kernel-level primitives — not integrations you wire together.

The Full Comparison Matrix

StreamKernel figures: May 27, 2026 live run. Flink/Spark figures: Battula (IJETCSIT, 2026) and noted sources. Measurement boundaries differ where indicated.

‡ Production Kafka transaction durability would normally use a replicated Kafka cluster. This benchmark intentionally used a single local broker to isolate StreamKernel's single-node execution profile.

Metric StreamKernel (laptop, single node) Apache Flink (12-node, 192-vCPU cluster) Spark SS (12-node, 192-vCPU cluster) Verdict
P99 Latency (EOS) † <1ms (reported 0.0ms at ms precision)
Internal pipeline latency
74 ± 3.1ms
SLA-A alert delivery to Kafka commit
231 ± 8.4ms
Micro-batch trigger is the latency floor
Directional
† Measurement boundaries differ
Avg Throughput (EOS) 621K eps avg / 820K peak ~121K EPS reported in IJETCSIT Workload A, Tier M
12-node / 192-vCPU benchmark. Not a single-node test. Not a throughput ceiling.
~138K EPS reported in same paper, same conditions Different Regime
StreamKernel measured on one laptop. Flink/Spark figures are cluster workload points, not equivalent conditions.
Zero Record Loss ✓ Prometheus confirmed · 372.5M records ✓ Kafka 2PC transactional guarantee ✓ Idempotent writer + Delta MERGE Tie — all three
Deployment Footprint (EOS) Local benchmark: 1 JAR + 1 local Kafka broker ‡ JobManager + TaskManagers + Kafka cluster + Checkpoint store Driver + Executors + cluster manager + Kafka cluster SK Wins
In-Process AI Inference Native (ONNX/DJL) — kernel primitive Custom UDF or external service commonly required MLlib (batch); streaming inference requires more components SK Wins
MLflow Model Governance Native · <30s promote/rollback · zero pipeline restart · zero record loss External orchestration required; job restart typical MLflow integration available; restart needed SK Wins
OPA Policy in Execution Path Kernel-level SPI — per-record or per-batch Possible; requires custom assembly Spark ACLs (coarse-grained); OPA requires custom work SK Wins
Air-Gap / Offline Viability Designed for single-runtime offline deployment Possible; higher assembly and operational burden Possible; higher assembly and operational burden SK Wins
On operational simplicity, not raw capability
Multi-node Scale-Out Single-node (v1). Linear scale via upstream partitioning. Native — designed for this. 1000s of nodes. Native — designed for this. Flink / Spark Win
Not StreamKernel's target regime

What Enterprise Hardware May Change

Every number in this article was produced on an i9-8950HK laptop — 6-year-old consumer hardware with 12 threads and no GPU. These are the minimum viable deployment floor. The following are hypotheses for future benchmark work, not published results.

Speculative — Not Benchmark Evidence

The projections below are engineering estimates based on known hardware scaling factors and Java Virtual Thread (Loom) characteristics. They will be validated in upcoming benchmark campaigns on enterprise hardware.

2–3M
EPS Hypothesis
32-core EPYC bare metal — estimate, not a benchmark result
2–4×
Loom Hypothesis
I/O-bound sink paths (MongoDB, Snowflake) under virtual threads — estimate only
20–50×
GPU Inference Hypothesis
DJL CUDA backend over CPU-only laptop baseline — estimate only
GB10
Next Target Hardware
NVIDIA DGX Spark — unified CPU+GPU memory via NVLink-C2C

The NVIDIA DGX Spark's unified memory architecture (NVLink-C2C connecting CPU and GPU memory pools) is of particular interest for StreamKernel's DJL CUDA backend — it may substantially reduce CPU/GPU transfer overhead compared with discrete GPU setups. This is a hypothesis to be validated, not a published result.

The Line Worth Publishing

Conclusion

StreamKernel on a 6-year-old laptop reported sub-millisecond internal pipeline latency and 621K avg EPS under transactional Kafka sink EOS. A published 12-node / 192-vCPU Flink/Spark benchmark (Battula, IJETCSIT 2026) reports 74ms Flink P99 alert delivery latency at 50K events/sec. The measurement boundaries differ, but the architectural contrast is meaningful: StreamKernel is not trying to replace Flink at cluster scale. It targets governed, air-gap-ready, inference-enriched execution where a single JVM is an operational advantage — and where assembling a Flink cluster, inference sidecar, checkpoint store, and policy layer is the disqualifying factor, not a feature.

References

[1]
Battula, S. K. Y. "Distributed Stream Processing for Real-Time Healthcare-Motivated Analytics in Multi-Cloud." IJETCSIT, Vol. 7, Issue 1, pp. 254–266. March 6, 2026. DOI: 10.63282/3050-9246.IJETCSIT-V7I1P138. Full paper →
Source for: Flink P99 74 ± 3.1ms, Spark P99 231 ± 8.4ms at 50K eps EOS; 12-node / 192-vCPU cluster; $14,200 disclosed cloud spend; SLA-A measurement boundary definition.
[2]
StreamKernel Live Benchmark — Run ID: run-eos-baseline-01 · May 27, 2026, 12:11–12:21 UTC. Hardware: i9-8950HK, 32GB RAM, no GPU. Transactional EOS confirmed: transactionalId=streamkernel-eos-bench-1, acks=-1, enable.idempotence=true. 372.5M records, 621K avg / 820K peak EPS, P99 reported 0.0ms at ms display resolution, zero drops. Prometheus metrics snapshot and G1GC logs on file.
[3]
Confluent Cloud Flink Documentation — Exactly-once delivery guarantees: "Exactly-once latency is roughly one minute" in managed deployments, dominated by Kafka transaction commit intervals. At-least-once can achieve sub-100ms. Confluent docs →
[4]
Apache Kafka KIP-447 — Producer scalability for exactly-once semantics; transactional processing and producer fencing model. KIP-447 →
Note: KIP-447 describes the transactional producer/consumer model and fencing. Production Kafka transaction durability commonly assumes a replicated cluster; the 3-broker convention stems from the default replication factor for the transaction-state topic (transaction.state.log.replication.factor=3), not from KIP-447 itself.