Zac Policzer
03/02/2026, 2:05 AMZac Policzer
03/02/2026, 2:07 AMZac Policzer
03/02/2026, 5:17 AMEnrico Olivelli
03/02/2026, 8:32 AMFelix GV
03/02/2026, 11:45 AMZac Policzer
03/02/2026, 2:29 PMSushant Mane
03/02/2026, 8:20 PMZac Policzer
03/02/2026, 8:23 PMSushant Mane
03/02/2026, 8:25 PMZac Policzer
03/08/2026, 2:44 AMFelix GV
03/08/2026, 4:33 AMSushant Mane
03/08/2026, 5:26 AMSushant Mane
03/08/2026, 5:57 AMHeapDumpStarDiver completed in 1m 44s for the 6.7GB dump. Here's the profiling breakdown:
┌────────────────────────────┬────────┬───────────────────────────────────────────────────────────┐
│ Phase │ Time │ Details │
├────────────────────────────┼────────┼───────────────────────────────────────────────────────────┤
│ Phase 1a (sequential scan) │ 1.3s │ 409,363 utf8 strings, 31,026 classes, 7,619 segments │
├────────────────────────────┼────────┼───────────────────────────────────────────────────────────┤
│ Phase 1b (parallel index) │ 34.2s │ 83,442,503 object mappings, 10,693,785 primitive mappings │
├────────────────────────────┼────────┼───────────────────────────────────────────────────────────┤
│ Phase 1c (finalize) │ 0.0s │ — │
├────────────────────────────┼────────┼───────────────────────────────────────────────────────────┤
│ Pass 2 (write parquet) │ 60.0s │ 31,026 schemas │
├────────────────────────────┼────────┼───────────────────────────────────────────────────────────┤
│ Writers close │ 8.0s │ Flush to disk │
├────────────────────────────┼────────┼───────────────────────────────────────────────────────────┤
│ Total wall clock │ 1m 44s │ 321% CPU utilization (good parallelism) │
└────────────────────────────┴────────┴───────────────────────────────────────────────────────────┘Sushant Mane
03/08/2026, 5:58 AM9,654 MetricsRepository instances — that's a lot! Each likely holds many sensors. And 203,651 SensorMBeans. Let me now compute a comprehensive summary.
🤯Zac Policzer
03/08/2026, 5:59 AMZac Policzer
03/08/2026, 6:00 AMSushant Mane
03/08/2026, 6:01 AMSushant Mane
03/08/2026, 6:02 AMAlso an experiment I wanna try. Explain to it what a PCS is and have it print it across ingestion taskshaha. I've been using it for that (we had a bug where leaderTopic was messed up during blob transfer.. it did great job figuring it out 😄)
Zac Policzer
03/08/2026, 6:02 AMSushant Mane
03/08/2026, 6:03 AMKey Ratios (per ingestion task)
┌───────────────────────────┬─────────────┬─────────────────────────────────────┐
│ Metric │ Value │ Assessment │
├───────────────────────────┼─────────────┼─────────────────────────────────────┤
│ MetricsRepos per task │ 19.7 │ High — each creates sensors, MBeans │
├───────────────────────────┼─────────────┼─────────────────────────────────────┤
│ SensorMBeans per task │ 416 │ Very high │
├───────────────────────────┼─────────────┼─────────────────────────────────────┤
│ Tehuti Sensors per task │ 894 │ Very high │
├───────────────────────────┼─────────────┼─────────────────────────────────────┤
│ PartitionConsumptionState │ 1,355 total │ Reasonable for 490 tasks │
└───────────────────────────┴─────────────┴─────────────────────────────────────┘Zac Policzer
03/08/2026, 6:03 AMSushant Mane
03/08/2026, 6:04 AMSushant Mane
03/08/2026, 6:09 AMLLM + HeapDumpStarDiver ❤️
⏺ Now let me check the key insight — how many of the 1,491 topics does each consumer actually subscribe to vs how many it caches.Zac Policzer
03/08/2026, 6:10 AMZac Policzer
03/08/2026, 6:10 AMZac Policzer
03/08/2026, 6:11 AMZac Policzer
03/08/2026, 6:11 AMSushant Mane
03/08/2026, 6:11 AMSushant Mane
03/08/2026, 6:12 AMZac Policzer
03/08/2026, 6:12 AMSushant Mane
03/08/2026, 6:13 AMZac Policzer
03/08/2026, 6:13 AMZac Policzer
03/08/2026, 6:13 AMSushant Mane
03/08/2026, 7:45 AMVeniceBots to do JXRay style analysis. If this is useful, I can cut a PR to merge them in the https://github.com/ZacAttack/HeapDumpStarDiver
Here are the results for this 6.7 GB Venice server heap dump (94M objects, 42K classes, robo mode):
JXRay Waste Summary — 1.8 GB estimated waste
┌─────┬───────────────────────────┬──────────┬────────┬──────────┐
│ # │ Check │ Affected │ Waste │ Severity │
├─────┼───────────────────────────┼──────────┼────────┼──────────┤
│ 1 │ Bad Collections │ 3.7M │ 408 MB │ CRITICAL │
├─────┼───────────────────────────┼──────────┼────────┼──────────┤
│ 2 │ Duplicate byte[] │ 7.3M │ 363 MB │ CRITICAL │
├─────┼───────────────────────────┼──────────┼────────┼──────────┤
│ 3 │ Class Count │ 42,396 │ 331 MB │ MEDIUM │
├─────┼───────────────────────────┼──────────┼────────┼──────────┤
│ 4 │ Duplicate Strings │ 4.6M │ 275 MB │ CRITICAL │
├─────┼───────────────────────────┼──────────┼────────┼──────────┤
│ 5 │ Bad Primitive Arrays │ 610K │ 208 MB │ CRITICAL │
├─────┼───────────────────────────┼──────────┼────────┼──────────┤
│ 6 │ DirectByteBuffer Off-Heap │ 9,448 │ 169 MB │ CRITICAL │
├─────┼───────────────────────────┼──────────┼────────┼──────────┤
│ 7 │ Collection Sizing │ 834K │ 33 MB │ HIGH │
├─────┼───────────────────────────┼──────────┼────────┼──────────┤
│ 8 │ Boxed Primitives │ 1.5M │ 24 MB │ HIGH │
├─────┼───────────────────────────┼──────────┼────────┼──────────┤
│ 9 │ GC Roots │ 43,464 │ — │ INFO │
└─────┴───────────────────────────┴──────────┴────────┴──────────┘
Key findings for this Venice server:
1. Bad Collections (408 MB) — The biggest waste. 672K empty HashMaps + 657K single-element HashMaps, 1M empty ArrayLists + 1M single-element ArrayLists. This is likely driven by per-partition/per-store metadata objects that
initialize collections they rarely populate.
2. Duplicate byte[] (363 MB) — 7.3M duplicate arrays across only 500K unique values. Likely serialized partition metadata, topic names, or Avro schemas being duplicated per consumer/producer.
3. Duplicate Strings (275 MB) — 4.6M dupes, worst single string duplicated 377K times (auto-sampled at 20% due to 7M+ strings). Store names and topic names repeated per partition are the usual culprit.
4. Bad Primitive Arrays (208 MB) — 400K wasteful byte[], 124K wasteful int[], 81K wasteful long[]. The float[] waste (93 MB) stands out — likely Tehuti/metrics related pre-allocated but unused sensor arrays.
5. 42K classes loaded — classloader concern territory. Many are lambda classes (note the $$Lambda$ proliferation in ingestion tasks — 80+ lambda class definitions just for AA/LF tasks).
6. Venice-specific context — 1,140 MBeans per ingestion task and 1,786 Kafka metadata objects per task confirms known metrics/metadata explosion. 2.16M TopicPartition objects is a major contributor to duplicated strings and byte
arrays.Sushant Mane
03/08/2026, 7:46 AMZac Policzer
03/08/2026, 12:48 PMSushant Mane
03/08/2026, 11:19 PMSushant Mane
03/09/2026, 6:11 PMZac Policzer
03/09/2026, 8:29 PMZac Policzer
03/09/2026, 8:30 PMSushant Mane
03/09/2026, 8:35 PMZac Policzer
03/09/2026, 8:40 PMSushant Mane
03/09/2026, 8:41 PM