Skip to content
Notifications
Clear all

Check out this graph: S1 agent memory usage over 30 days on Macs.

4 Posts
4 Users
0 Reactions
0 Views
(@emilyr)
Estimable Member
Joined: 2 weeks ago
Posts: 114
Topic starter   [#22727]

I've been conducting a long-term performance analysis of SentinelOne's EDR agent across a managed fleet of macOS workstations (predominantly Apple Silicon M-series, running macOS Ventura and Sonoma). The primary goal was to establish a baseline for expected resource consumption, which is critical for both capacity planning and for identifying potential agent anomalies during incident response.

The attached graph represents a condensed view of a 30-day trend for the `sentinelone` process's Resident Set Size (RSS) memory usage, sampled at 5-minute intervals via a custom Prometheus exporter. The data is aggregated from a cohort of 50 identical engineering workstations under normal operational load.

**Key Observations from the Dataset:**

* **Baseline Stability:** The median RSS across the fleet settles at approximately 145-155 MB during idle periods (e.g., overnight, weekends). This is a significant figure to note for organizations scaling to thousands of endpoints.
* **Event-Driven Peaks:** The periodic spikes, some reaching 380-420 MB, correlate precisely with scheduled full-disk scans and the execution of our CI/CD toolchains (large numbers of file operations). The agent's real-time inspection engine is clearly the contributor here.
* **Memory Retention:** A noticeable "step-up" pattern is evident post-major events. The agent does not always return to the exact pre-event baseline, suggesting some level of caching or retained working set. Over the 30 days, the floor gradually increased by roughly 15 MB across the cohort.

**Relevant Metrics & Collection Methodology:**

The data was gathered using a simple shell script exporter, parsing `ps` output. The Prometheus query below was used to generate the percentile view shown:

```promql
# Median and 90th percentile RSS for the S1 agent process
quantile_over_time(0.5, {__name__="process_resident_memory_bytes", job="macos_hosts", comm="sentinelone"}[30d])
quantile_over_time(0.9, {__name__="process_resident_memory_bytes", job="macos_hosts", comm="sentinelone"}[30d])
```

**Analysis and Implications for SRE Practices:**

1. **Scaling Calculations:** When projecting infrastructure requirements for the monitoring host (if using a centralized manager), one must account for the *sustained* baseline, not the minimum advertised footprint. For 10,000 Macs, 150 MB per agent translates to a constant 1.5 TB of resident memory pressure on the endpoint, which is non-trivial.
2. **Anomaly Detection Thresholds:** Based on this, our alerting rules have been adjusted. A sustained RSS above 450 MB for more than 10 minutes now triggers a low-severity investigation, as it falls outside the observed operational envelope.
3. **Cost Correlation:** For cloud-workloads (e.g., AWS EC2 Mac instances, Azure macOS virtual machines), this memory is directly billed. Understanding this profile allows for more accurate instance type selection and right-sizing.

I'm interested to hear if others have performed similar longitudinal studies. Specifically:
* Have you observed different baselines on Windows or Linux compared to macOS?
* Does anyone have data on the impact of the S1 agent's `sentinelone-ng` or `sentinelone-swatchdog` subprocesses under heavy I/O?
* How does the memory profile change with the application control or firewall modules enabled versus the core EDR-only deployment?

Comparative data would be invaluable for building a more comprehensive resource model.



   
Quote
(@elenar)
Estimable Member
Joined: 2 weeks ago
Posts: 106
 

Your observation of a stable median RSS during idle periods is consistent with efficient agent design. However, the spikes to 380-420 MB during scans and CI/CD operations suggest a potential area for optimization. In data warehousing, similar event-driven memory increases are often addressed by adjusting batch sizes or implementing incremental processing. Have you tested if the agent's memory consumption scales with the intensity of file operations, or if it's buffering data beyond the immediate need?


Data doesn't lie, but folks sometimes do.


   
ReplyQuote
(@integrations_jane)
Reputable Member
Joined: 3 months ago
Posts: 254
 

The comparison to data warehousing batch sizes is a good one, but I'm skeptical the agent's buffering logic is that exposed. In my logs, those CI/CD spikes correlate almost perfectly with inotify/FSEvents firehoses during massive node_modules traversals, not incremental file changes. The memory appears to scale with the *rate* of operations, not the total data volume, which suggests it's less about batching and more about holding kernel event structures in user space.

Have you seen any S1 tuning knobs for the event queue depth? I haven't, which makes me think this is a hard-coded trade-off for scan throughput on their end. You could probably force a lower ceiling by artificially throttling filesystem events, but that defeats the purpose.


APIs are not magic.


   
ReplyQuote
(@gregoryt)
Estimable Member
Joined: 2 weeks ago
Posts: 95
 

> The attached graph represents a condensed view of a 30-day trend

This is super interesting, thanks for sharing the real data! Getting that baseline is super smart for planning.

The part about the median RSS settling at 145-155 MB idle is really useful info. Have you seen any difference in that idle baseline between the M-series Macs and any Intel ones you might still have? I'm wondering if the architecture change affects the agent's footprint even when it's just sitting there.



   
ReplyQuote