<div dir="ltr"><div dir="ltr"><div>Hi! <br></div><div><br></div><div>My name is Kacper and I'm participating in this year's edition of Google Summer of Code under BEAM Community. My GSoC's project is an extension to Erlang Performance Lab. Erlang Lab is an Open Source project aimed at analysing the performance of Erlang and Elixir systems. The project provides web-based visualisations of the analysis. It can help developers to better understand their systems, observe the system behaviour and identify weaknesses.</div><div><br></div><div>My work is focused on visualising ETS tables performance. If you want to learn more about my GSoC project or erlangpl here are the links to have a look at:</div><div><br></div><div><a href="https://summerofcode.withgoogle.com/projects/#5695385677856768" target="_blank">https://summerofcode.withgoogl<wbr>e.com/projects/#56953856778567<wbr>68</a><br></div><div><a href="https://github.com/erlanglab/erlangpl" target="_blank">https://github.com/erlanglab/e<wbr>rlangpl</a><br></div><div><a href="https://github.com/mkacper/erlangpl" target="_blank">https://github.com/mkacper/erl<wbr>angpl</a><br></div><div><br></div><div>The extension to the EPL I'm going to implement will deliver 3 views which can be seen as layers through which you can look at the ETS tables. The idea is simple — if you want to trace a problem related to an ETS table, you start from the top-level view (the most general one) and go down through the subsequent layers (views) until you reach the one that will help you identify the source of the problem you are looking for. The scheme of the views looks as follows: cluster view (shows all the nodes in a cluster) -> node view (shows all ETS tables on a node) -> ETS details (shows more detailed information).</div><div><br></div><div>I've implemented the first view so far. Here is the screenshot: <a href="https://drive.google.com/file/d/0BzXT6yCa9ckQVzF0RnhibG9LbFE/view?usp=sharing" target="_blank">https://drive.goog<wbr>le.com/file/d/0BzXT6yCa9ckQVzF<wbr>0RnhibG9LbFE/view?usp=sharing</a></div><div><br></div><div>Now I'm working on the second view (node view). Here are some screenshots:</div><div><a href="https://drive.google.com/file/d/0BzXT6yCa9ckQTXNuTzYzVW00c1U/view?usp=sharing" target="_blank">https://drive.google.com/file/<wbr>d/0BzXT6yCa9ckQTXNuTzYzVW00c1U<wbr>/view?usp=sharing</a></div><div><a href="https://drive.google.com/file/d/0BzXT6yCa9ckQS05QQ3pWeWI5bkU/view?usp=sharing" target="_blank">https://drive.google.com/file/<wbr>d/0BzXT6yCa9ckQS05QQ3pWeWI5bkU<wbr>/view?usp=sharing</a><br></div><div><br></div><div>It shows all the ETS tables from a node linked to their owner's processes. The color of the tables reflects the amount of allocated memory for the table (red -> the heaviest, blue -> the lightest). This is only an example how we can visualise ETS related data.</div><div><br></div><div>The most imprtant questions to you are: </div><div>- What is worth measuring and visualising in terms of ETS performance? </div><div>- What kind of information can help developers to find ETS related problems?</div><div><br></div><div>Here are some of my (and EPL team's) ideas:</div><div><br></div><div>- the amount of the allocated memory for a particular ETS table,</div><div>- memory utilization/fragmentation - real size of a particular table in bytes compared to the amount of the memory allocated for that table</div><div>- number of rows in a partiuclar table</div><div>- some statistics about locks protecting ETS tables (collected using lcnt module)</div><div>- mean acces time to the table in a unit of time</div><div><br></div><div><div>I would be very grateful for your feedback, suggestions and ideas.</div><div><br></div><div>Cheers,</div><div>Kacper</div></div></div></div>