Project

General

Profile

Feature #10602

Support multithreaded profiling

Added by mperham (Mike Perham) almost 6 years ago. Updated over 1 year ago.

Status:
Open
Priority:
Normal
Assignee:
-
Target version:
-
[ruby-core:66863]

Description

The current rb_profile_frames captures the frame for whatever thread is current. This makes profiling a multithreaded system impossible. I'd like a rb_thread_profile_frames which captures a given thread. It seems like it would be a very simple change, something like this:

int
rb_profile_frames(int start, int limit, VALUE *buff, int *lines)
{
    rb_profile_frames(start, limit, buff, lines, GET_THREAD())
}

int
rb_thread_profile_frames(int start, int limit, VALUE *buff, int *lines, rb_thread_t *th)
{
    int i;
    rb_control_frame_t *cfp = th->cfp, *end_cfp = RUBY_VM_END_CONTROL_FRAME(th);
    ...

This way profiling gems could lock to a specific thread.

Also available in: Atom PDF