Skip to content
Notifications
Clear all

Does Splunk ES really need 20GB of RAM per indexer, or is that just vendor bloat?

1 Posts
1 Users
0 Reactions
0 Views
(@alexh82)
Reputable Member
Joined: 4 weeks ago
Posts: 245
Topic starter   [#24946]

The documented requirement of 20GB RAM per indexer for Splunk Enterprise Security (ES) is a frequent point of contention in infrastructure planning. While it can initially appear as vendor-inflated overhead, my analysis and experience in deploying ES in regulated environments suggest this figure is rooted in operational necessity, not arbitrary bloat. The primary drivers are ES's correlation search engine and its real-time security data models, which are fundamentally more resource-intensive than standard Splunk indexing and searching.

To understand the consumption, we must look at what an ES indexer is doing beyond a standard Splunk instance:

* **In-Memory Data Models:** ES accelerates investigations by maintaining large, pre-computed data model summaries (e.g., `Authentication`, `Intrusion_Detection`) in memory. These are populated by accelerated data model searches that run continuously, placing a constant load on RAM.
* **Correlation Search Concurrency:** A typical ES deployment runs dozens to hundreds of scheduled correlation searches simultaneously. Each search spawns a separate process (`splunkd`), and concurrent execution is memory-heavy to avoid disk I/O latency during real-time threat analysis.
* **Lookup Expansion:** ES heavily utilizes lookups (like asset and identity correlation). Large, frequently updated KV store lookups are memory-mapped for performance. With substantial asset databases, this can consume several gigabytes alone.
* **Process Overhead:** The underlying Splunk platform itself requires dedicated memory for indexing, searching, and management processes. ES adds the `splunk_es_*` processes for risk analysis and notable event management on top of this base.

In a lab or very low-throughput environment (sub-10 GB/day), you might survive with 16GB. However, for any production deployment with meaningful data volume, deviating below 20GB introduces tangible risks:

```text
Example Scenario:
- Data Ingestion: 50 GB/day of security logs (firewall, EDR, proxy).
- ES Data Models: 5 key models accelerated.
- Concurrency: ~40 active correlation searches during peak.

Observed Memory Breakdown (Approximate):
- Splunk Base Processes: 4-6 GB
- Accelerated Data Models: 6-8 GB
- Correlation Search Execution: 4-6 GB
- KV Store / Lookups: 2-3 GB
- OS & Buffer Cache: ~2 GB
-----------------------------------
Total: 18-25 GB
```

Attempting to run this on a 16GB system would lead to constant paging, search timeouts, dashboard lag, and ultimately, missed detections. The 20GB specification is a vendor baseline to ensure predictable performance under load. For larger deployments, 32GB or more is common. The true "bloat" is not in the RAM requirement, but in failing to right-size the underlying infrastructure for a workload that is inherently memory-resident by design for speed. Under-provisioning RAM becomes the single largest contributor to performance issues and false negatives in ES deployments.



   
Quote