Visualizing output from instrument:allocations()

Is there a way to visualize the output from instrument:allocations()? Currently it outputs something like:

{ok,{128,5295896,
     #{asn1rt_nif =>
           #{binary => {19,2109,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             drv_binary => {170,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}},
       crypto =>
           #{binary => {4775,2638,375,3,358,57,0,0,0,0,0,0,0,0,0,0,0,0},
             drv_binary => {3627,420,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}},
       prim_buffer =>
           #{binary => {0,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             drv_binary => {0,0,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             nif_internal => {0,92,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0}},
       prim_file =>
           #{binary => {95,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             drv_binary =>
                 {51,0,11,28,56,31,23,11,13,11,0,0,0,0,0,0,0,0}},
       spawn => #{binary => {0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}},
       system =>
           #{binary =>
                 {4188,13933,770,1020,2069,62,2,0,2,0,0,0,0,0,0,0,0,0},
             driver => {0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             driver_mutex => {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             driver_tsd => {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             drv_internal => {0,0,404,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             microstate_accounting =>
                 {1,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             nif_internal => {0,22,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             port => {0,0,409,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             port_data_lock => {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}},
       tcp_inet =>
           #{binary => {374,891,341,51,354,5,0,0,0,0,0,0,0,0,0,0,0,0},
             driver_tid => {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             driver_tsd => {1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             drv_binary => {0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0},
             drv_internal => {397,8,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
             port => {0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}}}}}

I have two different machines where erlang:memory(system) is returning very different results although the machines should be more or less identical, and I want to know why, but these histograms doesn’t tell me anything.

Allocation tagging is only enabled for driver (NIFs fall under this category too) and binary allocators by default, so the chances are high that the difference you’re observing in erlang:memory(system) is not included in these results.

To get a more complete view of what allocations have been made, pass the emulator option +Muatags true to enable it for all allocator types.