Skip to content
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

Add a new file type for traces which contain a mix of filtered and unfitered records. #6164

Closed
prasun3 opened this issue Jun 22, 2023 · 0 comments · Fixed by #6231
Closed
Assignees

Comments

@prasun3
Copy link
Contributor

prasun3 commented Jun 22, 2023

Add a pointer to any prior users list discussion.
Traces can have a mix of filtered and unfiltered records (see #5675 #5199). Currently, we assume OFFLINE_FILE_TYPE_{D,I}FILTERED after seeing TRACE_MARKER_TYPE_FILTER_ENDPOINT. A new file type suggested by @derekbruening in #5717 will make this more explicit.

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. E.g., "I'm always frustrated when [...]"

Describe the solution you'd like
Describe the desired functionality and its intended usage to give some context for how it would be used.

Do you have any implementation in mind for this feature?

Describe alternatives you've considered
Is there currently a method for implementing this functionality using the existing API and this requested feature will add convenience? Or is there no method for accomplishing the desired task using the current API?

Additional context
Add any other context or screenshots about the feature request here.

github-merge-queue bot pushed a commit that referenced this issue Jul 14, 2023
Add a separate L0_filter mode to enable switching from warmup/L0_filter
mode to the unfiltered mode.

Added an option (-L0_filter_until_instrs) which specifies the number of
instructions for warmup trace

In warmup mode, we filter accesses through the -L0{D,I}_filter caches.
If neither -L0D_filter nor -L0I_filter are specified then both are
assumed to be true. The size of these can be specified using
-L0{D,I}_size.

The filter instructions come after the -trace_after_instrs count and
before the instruction trace. This is intended to be used together with
other trace options (e.g., -trace_for_instrs, -exit_after_tracing,
-max_trace_size etc.) but with the difference that a filter trace is
also collected. The filter trace and full trace are stored in a single
file separated by a TRACE_MARKER_TYPE_FILTER_ENDPOINT marker.

When used with windows (i.e., -retrace_every_instrs), each window
contains a filter trace and a full trace. When we have windows contained
in a single-file, the TRACE_MARKER_TYPE_WINDOW_ID markers indicate start
of filtered records.

The following items are not addressed in this PR
- `-align_endpoints` test is not added
- new OFFLINE_FILE_TYPE_BIMODAL type to indicate that the file has both
filtered and unfiltered entries (#6164)
- items not tested
  - handling windows with single-file all-in-one traces
  - online trace
  - ifilter only or dfilter only
- use cases without `-trace_after_instrs`: tracing always starts in full
trace mode, so the tests fail if we use this option; need to understand
why this is happening

Issue: #5199
@abhinav92003 abhinav92003 assigned abhinav92003 and unassigned prasun3 Jul 19, 2023
abhinav92003 added a commit that referenced this issue Jul 26, 2023
Adds OFFLINE_FILE_TYPE_BIMODAL_FILTERED_WARMUP for traces that
are filtered before the TRACE_MARKER_TYPE_FILTER_ENDPOINT marker
and unfiltered after it.

Fixes: #6164
github-merge-queue bot pushed a commit that referenced this issue Jul 27, 2023
Adds OFFLINE_FILE_TYPE_BIMODAL_FILTERED_WARMUP for traces that are
filtered before the TRACE_MARKER_TYPE_FILTER_ENDPOINT marker and
unfiltered after it.

Adds invariant_checker checks to make sure the new file type and the
filter end-point marker are
always present together, or not at all.

Adds a test that the record filter adds the filter end-point marker also
for threads that start after
the filtering stop_timestamp. Adds a shard_count member to
basic_counts_t::counters_t to make
it easier to write the new test without hard-coding count of threads in
the test.

Fixes: #6164
ivankyluk pushed a commit to ivankyluk/dynamorio that referenced this issue Jul 28, 2023
Adds OFFLINE_FILE_TYPE_BIMODAL_FILTERED_WARMUP for traces that are
filtered before the TRACE_MARKER_TYPE_FILTER_ENDPOINT marker and
unfiltered after it.

Adds invariant_checker checks to make sure the new file type and the
filter end-point marker are
always present together, or not at all.

Adds a test that the record filter adds the filter end-point marker also
for threads that start after
the filtering stop_timestamp. Adds a shard_count member to
basic_counts_t::counters_t to make
it easier to write the new test without hard-coding count of threads in
the test.

Fixes: DynamoRIO#6164
ivankyluk pushed a commit to ivankyluk/dynamorio that referenced this issue Jul 29, 2023
Adds OFFLINE_FILE_TYPE_BIMODAL_FILTERED_WARMUP for traces that are
filtered before the TRACE_MARKER_TYPE_FILTER_ENDPOINT marker and
unfiltered after it.

Adds invariant_checker checks to make sure the new file type and the
filter end-point marker are
always present together, or not at all.

Adds a test that the record filter adds the filter end-point marker also
for threads that start after
the filtering stop_timestamp. Adds a shard_count member to
basic_counts_t::counters_t to make
it easier to write the new test without hard-coding count of threads in
the test.

Fixes: DynamoRIO#6164
ivankyluk pushed a commit to ivankyluk/dynamorio that referenced this issue Jul 29, 2023
Adds OFFLINE_FILE_TYPE_BIMODAL_FILTERED_WARMUP for traces that are
filtered before the TRACE_MARKER_TYPE_FILTER_ENDPOINT marker and
unfiltered after it.

Adds invariant_checker checks to make sure the new file type and the
filter end-point marker are
always present together, or not at all.

Adds a test that the record filter adds the filter end-point marker also
for threads that start after
the filtering stop_timestamp. Adds a shard_count member to
basic_counts_t::counters_t to make
it easier to write the new test without hard-coding count of threads in
the test.

Fixes: DynamoRIO#6164
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants