-
Notifications
You must be signed in to change notification settings - Fork 28
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Rework sampling and colorized logs #140
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
jrmadsen
added
documentation
Improvements or additions to documentation
enhancement
New feature or request
bug fix
Fixes a bug
timemory
Issue affects/involves timemory features/capabilities
libomnitrace
Involves omnitrace library
libomnitrace-dl
Involves omnitrace-dl library
omnitrace-instrument
Involves the omnitrace-instrument executable (binary instrumenter)
examples
Adds new example or modifies existing example
cmake
Modifies the CMake build system
submodule
Updates a git submodule
configuration
Changes/involves configuration options
labels
Aug 30, 2022
- created thread_info struct for mapping different thread IDs - reorganized many files - moved api.hpp and api.cpp - updated CMake in libomnitrace - added categories.hpp - added concepts.hpp - moved around name definitions - moved all omnitrace components into omnitrace::component namespace - there was a lot of inconsistency b/t using tim::component in some places and omnitrace::component - added macros like OMNITRACE_DECLARE_COMPONENT in lieu of TIMEMORY_DECLARE_COMPONENT - OMNITRACE_CRITICAL_TRACE_NUM_THREADS -> OMNITRACE_THREAD_POOL_SIZE - roctracer and critical_trace use same thread pool - critical_trace functions do not lock anymore bc of thread-local TaskGroup - added component::local_category_region to support using component::category_region without explicitly passing in name - removed component::omnitrace - removed component::user_region - removed component::functors - migrated Kokkos to use component::local_category_region - migrated OMPT to use component::local_category_region - migrated omnitrace_{push,pop}_{trace,region}_hidden to use component::category_region - migrated some ppdefs - api::omnitrace -> project::omnitrace - improved recording the execution time of threads - migrated this functionality out of pthread_create_gotcha and into thread_info - moved mpi_gotcha, fork_gotcha, exit_gotcha, rcclp into omnitrace::component namespace - split backtrace up into backtrace, backtrace_metrics, backtrace_timestamp components - sampling.cpp handles setup and post-processing that was formerly in backtrace - updated logging to use colors - OMNITRACE_COLORIZED_LOG config variable - updated docs on JSON output from timemory - instrumentation info in instrumentation subfolder - added testing for KokkosP entries - added testing for ompt entries - add_critical_trace function defined in critical_trace.hpp - disable push_thread_state and pop_thread_state when thread state is Disabled or Completed - add comp::page_rss to main bundle - thread_data supports std::optional instead of std::unique_ptr - thread_data supports tim::identity<T> to avoid unique_ptr or optional - tracing::record_thread_start_time() - tracing::push_timemory and tracing::pop_timemory are templated on CategoryT - removed anonymous namespace from omnitrace::utility - sampling backtrace stores instruction pointers instead of strings - component::category_region updates - handle disabled thread state - handle finalized state - fewer debug messages - invoke thread_init() - invoke thread_init_sampling() - handle push/pop count based on category - push/pop count only modified when used - component::cpu_freq - components/ensure_storage.hpp - reworked the pthread_create replacement function - updated parallel-overhead example to report # of times locked - OMNITRACE_MAX_UNWIND_DEPTH build option - update timemory submodule
jrmadsen
force-pushed
the
rework-sampling
branch
from
August 30, 2022 06:28
d6483a8
to
9275324
Compare
- fixes issue with unknown config variables and setenv
- use volatile dependencies to avoid optimizations causing reordering
- no longer enable realtime sampling on main thread unless realtime sampling is enabled
- record_thread_start_time overwrites value generated by sampling
- delay shutting down sampling until later on in finalize
- destroying this gotcha potentially deletes the function/context of thread
- enable configuring different frequencies and delays of realtime and cputime sampling - default to original settings - OMNITRACE_SAMPLING_CPUTIME_FREQ - OMNITRACE_SAMPLING_CPUTIME_DELAY - OMNITRACE_SAMPLING_REALTIME_FREQ - OMNITRACE_SAMPLING_REALTIME_DELAY
Closed
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
bug fix
Fixes a bug
cmake
Modifies the CMake build system
configuration
Changes/involves configuration options
documentation
Improvements or additions to documentation
enhancement
New feature or request
examples
Adds new example or modifies existing example
libomnitrace
Involves omnitrace library
libomnitrace-dl
Involves omnitrace-dl library
omnitrace-instrument
Involves the omnitrace-instrument executable (binary instrumenter)
submodule
Updates a git submodule
timemory
Issue affects/involves timemory features/capabilities
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Overview
This is a significant PR which has 3 very notable characteristics:
OMNITRACE_SAMPLING_CPUTIME
andOMNITRACE_SAMPLING_REALTIME
are ON:OMNITRACE_SAMPLING_CPUTIME_FREQ
andOMNITRACE_SAMPLING_REALTIME_FREQ
can be used to individually control the sampling frequencyOMNITRACE_SAMPLING_CPUTIME_DELAY
andOMNITRACE_SAMPLING_REALTIME_DELAY
can be used to individually control the delay time before startingOMNITRACE_SAMPLING_REALTIME
is ONOMNITRACE_SAMPLING_TIDS
(and real-time, cpu-time variants) configuration variable(s) will allow you to select which threads will be sampledomnitrace
exe --available-instr.txt
,instrumented-instr.txt
, etc. -- now no longer has-instr
suffix and are placed ininstrumentation/
subfolder, i.e.available-instr.txt
-> instrumentation/available.txt`Most of the other edits were reorganization (e.g. internal namespace changes), cleanup, and splitting up functionality.
Bug Fixes
There is a bug fix with respect to the HSA callbacks which disabled sampling on child threads when an HSA API call was made
Details
omnitrace::component
namespacetim::component
in some places andomnitrace::component
component::local_category_region
to support usingcomponent::category_region
without explicitly passing in namecomponent::omnitrace
(unused)component::local_category_region
component::user_region
as a resultcomponent::functors
as a resultapi::omnitrace
->project::omnitrace
api::(...)
->category::(...)
OMNITRACE_COLORIZED_LOG
config variable