Skip to content
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

Veneur CPU usage based on metric packets processed per second. #763

Open
prudhvi opened this issue Nov 11, 2019 · 5 comments
Open

Veneur CPU usage based on metric packets processed per second. #763

prudhvi opened this issue Nov 11, 2019 · 5 comments

Comments

@prudhvi
Copy link
Contributor

prudhvi commented Nov 11, 2019

Hi Team
We are seeing veneur using 1 logical CPU for about 60k metrics processed per second. We are sending stats to Veneur via java datadog client over Unix Domain Socket. Just wanted to know if such usage is expected or if we configured something bad.

Attaching the signalfx charts that show the stats:

veneur.worker.metrics_processed_total chart:

Screen Shot 2019-11-11 at 2 01 18 PM

Logical CPU's used by Veneur chart:

Screen Shot 2019-11-11 at 2 01 30 PM

@prudhvi
Copy link
Contributor Author

prudhvi commented Nov 11, 2019

cc @aditya-stripe @antifuchs Does this CPU usage look normal/expected to you?

@ChimeraCoder
Copy link
Contributor

That's not expected. Could you share a CPU profile so we can see where that's getting clogged up?

@prudhvi
Copy link
Contributor Author

prudhvi commented Nov 12, 2019

Cool thanks, am curious how far are we off ? Should it be doing double this or 10x this?

profile_120sec.pdf
profile_300sec.pdf

We have flush interval of 30 seconds and run veneur as a sidecar to app in LXC containers. We have the following config for veneur. Also FYI we do run a fork of veneur where we do some metricname parsing and renaming before we flush to signalfx in the sink signalfx.go.

  num_readers: 20
  num_span_workers: 10
  num_workers: 96
  read_buffer_size_bytes: 2097152
  metric_max_length: 32768
  span_channel_capacity: 100
  metric_max_length: 32768
  trace_max_length_bytes: 16384
  ssf_listen_addresses:
    - unix:///data/app/tmp/veneur-ssf.sock
  statsd_listen_addresses:
    - unixgram:///data/app/tmp/veneur.sock

I am attaching the CPU profile for 120 seconds and 300 seconds.

@prudhvi
Copy link
Contributor Author

prudhvi commented Nov 13, 2019

@aditya-stripe , Sorry before spending more time into investigating bottleneck for CPU usage, am curious to know how much is expected throughput for 1 logical CPU in veneur for metrics consumption via statsd.

I noticed similar metric processed throughput per 1 logical CPU when using UDP too.
60k/sec is what the https://github.com/stripe/veneur#benchmarks says too but wanted to confirm , is that a old number that needs updating?

@prudhvi
Copy link
Contributor Author

prudhvi commented Nov 19, 2019

Also attaching the UDP profiles (when sending metrics via UDP instead of unix domain socket)
udp_profile_300sec.pdf
udp_profile_120sec.pdf

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants