-
Notifications
You must be signed in to change notification settings - Fork 561
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
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
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
derekbruening
approved these changes
Oct 9, 2024
clients/drcachesim/tests/record_filter_invalidate_cpu.templatex
Outdated
Show resolved
Hide resolved
edeiana
changed the title
i#7031: invalidate CPU marker filter
i#7031: modify marker value filter
Oct 15, 2024
edeiana
commented
Oct 15, 2024
Requesting re-review due to significant changes, in case I missed something. |
derekbruening
approved these changes
Oct 15, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
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 withrecord_filter
as follows: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 testcode_api|tool.record_filter_modify_marker_value
which invokes theinvariant_checker
andview
tool on the filtered trace.Fixes #7031