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

i#7031: modify marker value filter #7033

Merged
merged 15 commits into from
Oct 16, 2024
Merged

i#7031: modify marker value filter #7033

merged 15 commits into from
Oct 16, 2024

Conversation

edeiana
Copy link
Contributor

@edeiana edeiana commented Oct 9, 2024

In some cases we want to modify the value of certain types of markers
(TRACE_MARKER_TYPE_) in the trace.
For example, we might want to avoid exposing the "as traced" CPU schedule in
an offline trace because it might not be representative of the native execution
of the traced program.
Hence, we want to set the value of all TRACE_MARKER_TYPE_CPU_ID in the
trace to unknown (i.e., (uintptr_t)-1 as documented).

To do so we implement modify_marker_value_filter_t, a new filter that is used with
record_filter as follows:

drrun -t drmemtrace -tool record_filter -filter_modify_marker_value 3,0xffffffffffffffff,18,2048 \
-indir path/to/input/trace -outdir path/to/output/trace

Here we set the value of TRACE_MARKER_TYPE_CPU_ID == 3 markers to
(uintptr_t)-1 == 0xffffffffffffffff, which representes an unknown CPU, and
TRACE_MARKER_TYPE_PAGE_SIZE == 18 markers to 0x800 == 2048 == 2k pages.

In general, this filter takes a list of pairs <TRACE_MARKER_TYPE_,new_value>
and modifies the value of all listed TRACE_MARKER_TYPE_ markers in the trace
with new_value.

We add a unit test test_modify_marker_value_filter() and an end-to-end test
code_api|tool.record_filter_modify_marker_value which invokes the
invariant_checker and view tool on the filtered trace.

Fixes #7031

In some cases we don't want to expose the "as traced" CPU schedule
in an offline trace because it might not be representative of the
native execution of the traced program.

To do so we implement `invalidate_cpu_filter_t`, a new filter that
is used with `record_filter` as follows:
```
drrun -t drmemtrace -tool record_filter -filter_invalidate_cpu -indir path/to/input/trace -outdir path/to/output/trace
```
This filter set the value of TRACE_MARKER_TYPE_CPU_ID markers to
(uintptr_t)-1, which representes an unknown CPU.

We add a unit test `test_invalidate_cpu_filter()` and an end-to-end
test `code_api|tool.record_filter_invalidate_cpu` which invokes the
`invariant_checker` and `view` tool on the filtered trace.

Fixes #7031
@edeiana edeiana marked this pull request as ready for review October 9, 2024 11:05
api/docs/release.dox Outdated Show resolved Hide resolved
clients/drcachesim/common/options.cpp Outdated Show resolved Hide resolved
clients/drcachesim/tests/record_filter_unit_tests.cpp Outdated Show resolved Hide resolved
clients/drcachesim/tools/filter/invalidate_cpu_filter.h Outdated Show resolved Hide resolved
@edeiana edeiana changed the title i#7031: invalidate CPU marker filter i#7031: modify marker value filter Oct 15, 2024
@edeiana
Copy link
Contributor Author

edeiana commented Oct 15, 2024

Requesting re-review due to significant changes, in case I missed something.

api/docs/release.dox Outdated Show resolved Hide resolved
@edeiana edeiana merged commit 5f74563 into master Oct 16, 2024
17 checks passed
@edeiana edeiana deleted the i7031-invalidate-cpu branch October 16, 2024 17:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Invalidate TRACE_MARKER_TYPE_CPU_ID filter
2 participants