Replies: 4 comments 1 reply
-
|
Hi @prayerx , There are a few factors that can limit throughput including the concurrency model of any components involved (sources, sinks, transforms) as well as back pressure from sinks if they can't send data fast enough. In your case, you mention it is just
Importantly the |
Beta Was this translation helpful? Give feedback.
-
|
Hi @jszwedko, thanks for your detailed answer. You guessed right, its UDP since I believed it'll perform better but maybe i'm wrong. The example threads didn't help a lot but your last sentence is very important. |
Beta Was this translation helpful? Give feedback.
-
|
Coming back to this thread because @prayerx's question about threading models across sources is still relevant and worth a more complete answer. Vector's threading model by source type (rough guide):
For your specific case — high-throughput UDP syslog — the practical options are: 1. Run multiple Vector instances on the same host, each bound to a different port 2. Switch to TCP syslog 3. Use a UDP fan-out proxy in front of Vector On the broader question of CPU utilization The 70 MB/s ceiling on 16 cores (effectively using ~5 cores at 50%) is consistent with a single-threaded receive loop hitting its per-core limit. The remaining cores are idle because there's no work to distribute to them — the UDP queue is the only ingestion path. For what it's worth, this single-threaded ingestion ceiling is one of the design constraints we ran into when building WarpParse. We ended up using a shared thread pool for ingestion rather than per-source single threads — which lets the process saturate available cores regardless of source type. Happy to share more detail on the tradeoffs if useful. |
Beta Was this translation helpful? Give feedback.
-
|
I wrote a batched UDP recvmmsg PR a while ago. Its quite alot faster for UDP. No multi threading though. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Hi, im trying to understand limit of vector. I read scaling documents and i should be easily see 10MB/s for each CPU core.
Im testing on my lab with a python script sending syslog and listening on vector end with socket source without transforms and sinking to blackhole.
I can reach around 70MB/s without packet drops with having 16 cpu cores, after that it starts to drop packets. When i monitor each cpu core with htop, 5 cores are working (changing which core is active) with %50 utilisation.
I'm expecting from vector to use all CPU cores to %100 (or close) before it start dropping packets. Is my expectation wrong? If not what should be the issue here?
Beta Was this translation helpful? Give feedback.
All reactions