-
Notifications
You must be signed in to change notification settings - Fork 11
docs(dogstatsd): document dogstatsd_mem_based_rate_limiter.* as architectural divergence
#1775
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from 1 commit
ee2000b
8d45b08
b92351e
4d62df9
ddba05e
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,6 +1,6 @@ | ||
| # Configuring DogStatsD on Agent Data Plane | ||
|
|
||
| <!-- Last updated: 2026-05-19 --> | ||
| <!-- Last updated: 2026-05-29 --> | ||
|
|
||
| The DogStatsD implementation on ADP has been redesigned in Rust for better resource guarantees and | ||
| efficiency. Because the architecture is different from the original implementation, certain | ||
|
|
@@ -48,7 +48,7 @@ architecture is fundamentally different or the feature is platform-specific. | |
| | Config Key | Description | Reason | | ||
| | ---------------------------------------------- | ---------------------------------- | ------------------------------------------------------------ | | ||
| | `dogstatsd_host_socket_path` | Host UDS socket dir for DSD | Not read by DSD server; admission controller only | | ||
| | `dogstatsd_mem_based_rate_limiter.enabled` | Enable memory rate limiter | Go GC specific; use `memory_limit` | | ||
| | `dogstatsd_mem_based_rate_limiter.*` | Memory-based rate limiter (11 keys) | Go GC–specific; ADP uses `memory_limit` (see below) | | ||
| | `dogstatsd_no_aggregation_pipeline_batch_size` | No-aggregation pipeline batch size | Fixed in ADP topology | | ||
| | `dogstatsd_packet_buffer_flush_timeout` | Packet buffer flush timeout | ADP decodes inline | | ||
| | `dogstatsd_packet_buffer_size` | Datagrams per packet buffer | ADP decodes inline | | ||
|
|
@@ -59,6 +59,29 @@ architecture is fundamentally different or the feature is platform-specific. | |
| | `dogstatsd_workers_count` | Number of DSD processing workers | ADP uses async tasks | | ||
| | `use_dogstatsd` | Master DogStatsD enable toggle | Core Agent evaluates and sets `data_plane.dogstatsd.enabled` | | ||
|
|
||
| ### Memory-based rate limiter (`dogstatsd_mem_based_rate_limiter.*`) | ||
|
|
||
| The core agent exposes 11 keys under this prefix to apply backpressure when the Go process | ||
| approaches its memory limit. They work by manipulating Go's garbage collector | ||
| (`debug.SetGCPercent`, `debug.FreeOSMemory`), allocating a large heap ballast to adjust GC | ||
| heuristics, and blocking goroutines to slow packet ingestion. None of these mechanisms have | ||
| an equivalent in Rust, and ADP does not use a Go runtime. | ||
|
|
||
| ADP takes a different approach to the same problem: | ||
|
|
||
| - **Static bounds**: components declare their memory footprint at startup via `MemoryBounds`. | ||
| ADP refuses to start if declared bounds exceed the configured `memory_limit`, preventing | ||
| over-commitment before any traffic arrives. | ||
| - **Dynamic limiting**: a `MemoryLimiter` polls the process RSS every 250 ms. When usage | ||
| exceeds 95 % of the effective limit it applies proportional async backpressure (1–25 ms) | ||
| to ingestion tasks. | ||
| - **Structural backpressure**: bounded channels between components provide back-pressure | ||
| independently of memory monitoring. | ||
|
|
||
| To set a process memory limit in ADP, use `memory_limit` (bytes). The `memory_slop_factor` | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
When a user follows this replacement guidance and only sets Useful? React with 👍 / 👎. |
||
| setting reserves a headroom fraction to account for allocations not tracked by ADP's internal | ||
| accounting. All 11 `dogstatsd_mem_based_rate_limiter.*` keys are ignored by ADP. | ||
|
jszwedko marked this conversation as resolved.
Outdated
|
||
|
|
||
| ## Behavioral Differences | ||
|
|
||
| <!-- section:behavioral-differences --> | ||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.