arkgil

arkgil

Erlang Performance Lab

Hello everyone!

Erlang Performance Lab is a tool for developers working with the BEAM, which aims to help with analysis of performance and behaviour of their systems.

Our goal is to provide a tool which will allow folks to see and understand what’s happening inside their systems at first few glances. That’s why we focus on visualising system’s behaviour rather than displaying raw debug information, which may be more detailed, but much harder to comprehend. We strive to make EPL useful for experienced developers, as well as people just getting into the BEAM world. Please note that it’s not meant to be a production-ready monitoring solution, but rather a debugging tool used in your day-to-day development.

Currently our three main “views” are:

  • general node info, memory usage and processes count
  • visualisation of applications’ supervision trees
  • visualisation of network traffic between nodes in a cluster, and visualisation of message passing inside a single node

And a little teaser:

Usage

EPL is portable, meaning you only need Erlang installed on your machine. Then download our prebuilt escript and you’re good to go. You can find download link on our website. To see what it’s all about, follow examples in the README.

Contributing

EPL is completely open-source, and we’d very much appreciate any kind of contributions, be it general usability feedback, finding bugs (:blush:), or developing new views and extending existing ones!

We’re announcing it here today, because just 2 hours ago we merged a pull request, which allows development of backend plugins in Elixir!

Resources

If you have any questions regarding EPL, our vision, roadmap, favourite color, don’t hesitate to ask here or post an issue on Github. :slight_smile:

Most Liked

OvermindDL1

OvermindDL1

Ooo this looks fascinating! Thanks for the post!

arkgil

arkgil

I’m glad you like it :slight_smile: Have fun and break it!

arkgil

arkgil

Great to hear that you’ve already found it useful!

We’re currently working on polishing existing views. Next on the roadmap are:

  • Drawing flame graphs for the processes
  • Tracking messages received by the process, recording how they affect its state, and drawing it on a “timeline”

Where Next?

Popular in Discussions Top

Jayshua
I recently came across the javascript library htmx. It reminded me a lot of liveview so I thought the community here might be interested....
New
jeramyRR
This is an interesting article to read. Elixir’s performance, like usual, is excellent. However, it seems like the high CPU usage is co...
New
ricklove
I was just introduced to Elixir and Phoenix. I was told about the 2 million websocket test that was done 2 years ago. From my research, t...
New
AstonJ
I’ve just started the Phoenix part of the utterly brilliant online course by @pragdave. On generating the Phoenix app he uses the --no-ec...
New
ejpcmac
I have discovered Nix last month and I am currently on my way to migrating to it—both on macOS at home and the full NixOS distrubution at...
New
crabonature
I’m still quite new to Elixir. As I understand we got in Elixir “multi guards” as convention to simplify one large guard with or’s?: de...
New
New
PragTob
Hey everyone, this has been on my mind for some time and I’d love your input on it! TLDR: I feel like maps are superioer for storing and...
New
rms.mrcs
A couple of days ago I was discussing with a friend about different approaches to write microservices. He said that if he was going to w...
New
klo
Got a question about when to concat vs. prepending items to list then reversing to achieve appending. So i know lists boil down to [1 | ...
New

Other popular topics Top

skosch
To my knowledge, put_in, Map.update etc. all have the one limitation of not automatically creating intermediate keys when needed (for exa...
New
Nvim
Anybody knows a comprehensive comparison of Django and Phoenix, thanks for the help. Where are they similar? Where do they differ the m...
New
Patoshizzle
After calling mix ecto.create I get this error: 17:00:32.162 [error] GenServer #PID<0.412.0> terminating ** (Postgrex.Error) FATAL...
New
hariharasudhan94
lets say i have a sample like a = 20; b = 10; if (a > b) do {:ok, "a"} end if (a < b) do {:ok, b} end if (a == b) do {:ok, "equa...
New
pmjoe
I have a relationship of love and hate with Elixir. Lots of things are just absolutely right, but there are some things that are kind of ...
New
SoCreat
i’m a new one to elixir which editor can i use vs code? or atom? Thanks! :smiley:
New
belgoros
I’m not a pro in using Regex and can’t figure out why the following behaviour happens, especially if we take into account the difference ...
New
grych
Hi folks, Few months ago I have announced the proof-of-concept of the library to manipulate the browsers DOM objects directly from Elixi...
639 52341 488
New
ashish173
I am using Ecto timestamps with postgres, I can see the timestamps() use the :naive_dateime but for my use case I wanted to store the ti...
New
marick
I had some trouble figuring out how to make many-to-many associations work. Once I got it working, I wrote a blog post. Because I’m a nov...
New

We're in Beta

About us Mission Statement