Skip to content

Instantly share code, notes, and snippets.

@rzezeski
Created March 11, 2015 23:44
Show Gist options
  • Save rzezeski/d683629c3cb176c05696 to your computer and use it in GitHub Desktop.
Save rzezeski/d683629c3cb176c05696 to your computer and use it in GitHub Desktop.
dtrace Erlang VM GC
dtrace -p $(pgrep beam.smp) -n 'pid$target::collect_heap_frags*:entry {print(*args[0]);}'
10 5214 collect_heap_frags:entry Process {
ErtsPTabElementCommon common = {
Eterm id = 0x13000000263
ethr_atomic32_t refc = {
volatile ethr_sint32_t counter = 0x1
}
Eterm tracer_proc = 0xfffffffffffffffb
Uint trace_flags = 0
union u = {
struct alive = {
Uint64 started_interval = 0
struct reg_proc *reg = 0
ErtsLink *links = 0xfffffd7ffad80180
ErtsMonitor *monitors = 0
ErtsSmpPTimer *ptimer = 0
}
ErtsThrPrgrLaterOp release = {
ErtsThrPrgrVal later = 0
void (*)() func = 0
void *data = 0xfffffd7ffad80180
ErtsThrPrgrLaterOp *next = 0
}
}
}
Eterm *htop = 0xfffffd7ffa5a0b78
Eterm *stop = 0xfffffd7ffa5a0b78
Eterm *heap = 0xfffffd7ffa59d9b0
Eterm *hend = 0xfffffd7ffa5a0ba0
Uint heap_sz = 0x63e
Uint min_heap_size = 0xe9
Uint min_vheap_size = 0xb556
Uint arity = 0x3
Eterm *arg_reg = 0xfffffd7ffad85e50
unsigned int max_arg_reg = 0x6
Eterm [6] def_arg_reg = [ 0x2b4b, 0xb4b, 0xfffffd7ffc79b711, 0, 0, 0x7d0 ]
BeamInstr *cp = 0
BeamInstr *i = 0x817e00
Sint catches = 0
Sint fcalls = 0xf7
Uint32 rcount = 0
int schedule_count = 0
Uint reds = 0
Eterm group_leader = 0xc800000193
Uint flags = 0
Eterm fvalue = 0xfffffffffffffffb
Uint freason = 0
Eterm ftrace = 0xfffffffffffffffb
Process *next = 0xfffffd7ffad86088
struct ErtsNodesMonitor_ *nodes_monitors = 0
ErtsSuspendMonitor *suspend_monitors = 0
ErlMessageQueue msg = {
ErlMessage *first = 0
ErlMessage **last = 0xfffffd7ffad85ef0
ErlMessage **save = 0xfffffd7ffad85ef0
Sint len = 0
BeamInstr *mark = 0
ErlMessage **saved_last = 0
}
ErlExtraRootSet *extra_root = 0
union u = {
ErtsBifTimer *bif_timers = 0
void *terminate = 0
}
ProcDict *dictionary = 0
Uint seq_trace_clock = 0
Uint seq_trace_lastcnt = 0
Eterm seq_trace_token = 0xfffffffffffffffb
Eterm dt_utag = 0xfffffffffffffffb
Uint dt_utag_flags = 0
BeamInstr [3] initial = [ 0x2b4b, 0xb4b, 0x2 ]
BeamInstr *current = 0xfffffd7ffad85f60
Eterm parent = 0x10000000203
erts_approx_time_t approx_started = 0x5500d2d8
Eterm *high_water = 0xfffffd7ffa59db58
Eterm *old_hend = 0xfffffd7ffa597d08
Eterm *old_htop = 0xfffffd7ffa597148
Eterm *old_heap = 0xfffffd7ffa597148
Uint16 gen_gcs = 0x4
Uint16 max_gen_gcs = 0xffff
ErlOffHeap off_heap = {
struct erl_off_heap_header *first = 0
Uint64 overhead = 0
}
ErlHeapFragment *mbuf = 0xfffffd7ffc7be798
Uint mbuf_sz = 0x35
ErtsPSD *psd = 0
Uint64 bin_vheap_sz = 0xb556
Uint64 bin_vheap_mature = 0
Uint64 bin_old_vheap_sz = 0xb556
Uint64 bin_old_vheap = 0
ethr_atomic32_t state = {
volatile ethr_sint32_t counter = 0x2a2
}
ErlMessageInQueue msg_inq = {
ErlMessage *first = 0
ErlMessage **last = 0xfffffd7ffad86008
Sint len = 0
}
ErtsPendExit pending_exit = {
Eterm reason = 0
ErlHeapFragment *bp = 0
}
erts_proc_lock_t lock = {
ethr_atomic32_t flags = {
volatile ethr_sint32_t counter = 0x1
}
erts_tse_t *[4] queue = [ 0, 0, 0, 0 ]
ethr_atomic32_t refc = {
volatile ethr_sint32_t counter = 0x1
}
}
ErtsSchedulerData *scheduler_data = 0xfffffd7ffa635d40
Eterm suspendee = 0xfffffffffffffffb
ErtsPendingSuspend *pending_suspenders = 0
ethr_atomic_t run_queue = {
volatile ethr_sint64_t counter = 0xfffffd7ffa601640
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment