You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
hmz007 36ed224bac
Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a)
1 year ago
..
README.md Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
chrome_unwind_info_android.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
chrome_unwind_info_android.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
chrome_unwind_info_android_unittest.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
chrome_unwinder_android.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
chrome_unwinder_android.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
chrome_unwinder_android_unittest.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
frame.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
frame.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
frame_pointer_unwinder.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
frame_pointer_unwinder.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
frame_pointer_unwinder_unittest.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
libunwindstack_unwinder_android.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
libunwindstack_unwinder_android.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
libunwindstack_unwinder_android_unittest.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
metadata_recorder.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
metadata_recorder.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
metadata_recorder_unittest.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
module_cache.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
module_cache.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
module_cache_mac.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
module_cache_posix.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
module_cache_unittest.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
module_cache_win.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
native_unwinder_android.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
native_unwinder_android.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
native_unwinder_android_map_delegate.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
native_unwinder_android_memory_regions_map.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
native_unwinder_android_unittest.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
native_unwinder_win.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
native_unwinder_win.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
profile_builder.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
register_context.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
sample_metadata.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
sample_metadata.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
sample_metadata_unittest.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
sampling_profiler_thread_token.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
sampling_profiler_thread_token.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
stack_base_address_posix.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
stack_base_address_posix.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
stack_base_address_posix_unittest.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
stack_buffer.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
stack_buffer.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
stack_buffer_unittest.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
stack_copier.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
stack_copier.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
stack_copier_signal.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
stack_copier_signal.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
stack_copier_signal_unittest.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
stack_copier_suspend.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
stack_copier_suspend.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
stack_copier_suspend_unittest.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
stack_copier_unittest.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
stack_sampler.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
stack_sampler.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
stack_sampler_android.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
stack_sampler_ios.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
stack_sampler_mac.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
stack_sampler_posix.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
stack_sampler_unittest.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
stack_sampler_win.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
stack_sampling_profiler.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
stack_sampling_profiler.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
stack_sampling_profiler_java_test_util.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
stack_sampling_profiler_java_test_util.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
stack_sampling_profiler_test_util.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
stack_sampling_profiler_test_util.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
stack_sampling_profiler_unittest.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
suspendable_thread_delegate.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
suspendable_thread_delegate_mac.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
suspendable_thread_delegate_mac.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
suspendable_thread_delegate_win.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
suspendable_thread_delegate_win.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
test_support_library.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
thread_delegate.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
thread_delegate_posix.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
thread_delegate_posix.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
thread_delegate_posix_unittest.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
unwinder.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
unwinder.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
win32_stack_frame_unwinder.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
win32_stack_frame_unwinder.h Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
win32_stack_frame_unwinder_unittest.cc Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago

README.md

What is this?

//base/profiler implements a statistical profiler for Chrome execution. It supports periodic sampling of thread stacks for the purpose of understanding how frequently different parts of the Chrome code are being executed. The profiler is used to collect execution information by UMA, for broad-scale profiling, and by Chrometto, for targeted profiling during tracing.

Technical Overview

The primary entry point to this code is StackSamplingProfiler. This class regularly records the list of currently executing functions on a target thread. See the comments above that function for an overview of how to use the profiler.

The details are very platform-specific, but the major sub-components are

  • A dedicated thread is created to periodically wake up and sample the target thread. At each wake up:
    • A StackCopier copies the target thread's stack memory into a StackBuffer.
    • One or more Unwinders take the memory blob in the StackBuffer and turn it into a list of function Frames. Every platform has a native unwinder to deal with C++ frames; there are also unwinders for V8's special frame layout and for Java frames.
    • Frames have the function instruction address and some module information from ModuleCache. This should be enough for a program with access to the original debug information to reconstruct the names of the functions in the stack. The actual conversion back to human-readable names is not part of this directory's code.
    • A subclass of ProfileBuilder is called with a vector of Frames corresponding to one stack. The various users of this code are responsible for implementing this subclass and recording the stacks in the manner they see fit.