mgwidmann

mgwidmann

Measuring & Tuning GenStage/Flow performance

I have personally never put a flow application into production so I was wondering what others were doing with regard to measuring and tuning GenStage and Flow specific metrics. I’ve never seen anything specifically targeted at this and from my experience with GenStage/Flow it can be quite challenging to get it right. Beyond normal CPU/Memory metrics and such, what would you use to tune and monitor your flow application?

Basically, I’d like to know what others are doing to 1) Develop and tune their flow application to get the most performance out of it, and 2) Monitor and understand that performance when deployed in production.

A list of metrics I would be interested in would be something along the lines of:

  • For each producer or producer/consumer:
    • Event count buffer - average, p90 and p100
    • Time to generate new events - average & p90
    • Number of events generated - average
    • Demand count buffer - average, p90 and p100
  • For each consumer or producer/consumer:
    • Event counts processed - average, p90
    • Time to process each event - average & p90
    • Some way to determine distribution of work, not sure about this one, is it all one or two workers doing everything or is it evenly spread?

I understand you could simply put a :timer.tc(fn -> end) around each of the implementations (or something fancier with a macro) but I’m curious more about what are people using and what metrics are they tracking to tune and monitor.

First Post!

nicholasjhenry

nicholasjhenry

I would very interested to find out what path you took with this. What performance monitoring did you add? Cheers!

Where Next?

Popular in Discussions Top

AstonJ
Are there any Elixir or Erlang libraries that help with this? I’ve been thinking how streaming services like twitch have exploded recentl...
New
CharlesO
Erlang :list.nth simple, but 1 - based nth(1, [H|_]) -> H; nth(N, [_|T]) when N > 1 -> nth(N - 1, T). Elixir Enum.at … coo...
New
AstonJ
Please see the new poll here: Which code editor or IDE do you use? (Poll) (2022 Edition) It’s been a while since we first asked this, I...
208 31771 143
New
tmbb
This is a post to discuss the new Phoenix LiveView functionality. From Chris’s talk, it appears that they generate all HTML on the serve...
342 18634 126
New
cvkmohan
The upcoming Phoenix 1.6 release looks very interesting. Became a habit to watch the commits - and - what they are bringing in. phx.gen...
New
sergio
Kind of like when jquery came out, it was super necessary. Existing drag and drop libraries have a bunch of baggage to support old browse...
New
shishini
I think this twitter post and youtube video didn’t get as much attention as I hoped I am still new to Elixir, so can’t really judge ...
New

Other popular topics Top

sergio_101
I am VERY much an elixir newbie. I have taken one elixir course and one phoenix course on Udemy. During that course, I saw the instructor...
New
shijith.k
I am trying to start a new phoenix project with elixir 1.9, but mix phx.new does not work. It says that ** (Mix) The task "phx.new" could...
New
AngeloChecked
What learn first? Rust or Elixir Hi Elixir community! I’m here because i want learn a new language. I’m a junior developer and mainly i ...
New
albydarned
Hello all! I am typing this post from my new MacBook Pro with the M1 chip. I’m loving it so far, and will probably use it as my daily dr...
New
senggen
Erlang/OTP 25 [erts-13.2.2] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] 15:22:35.803 [error] gen_event {lager_file_backend...
New
AstonJ
Posting this to see if we can make things easier for people to get into Neovim. If you use Neovim and have a favourite distro please let ...
New

We're in Beta

About us Mission Statement