Skip to content

i#7157 dyn inject: Fix extra switch injections#7302

Merged
abhinav92003 merged 6 commits intomasterfrom
i7157-fix-extra-switch-inject
Feb 25, 2025
Merged

i#7157 dyn inject: Fix extra switch injections#7302
abhinav92003 merged 6 commits intomasterfrom
i7157-fix-extra-switch-inject

Conversation

@abhinav92003
Copy link
Copy Markdown
Contributor

@abhinav92003 abhinav92003 commented Feb 25, 2025

Fixes a bug in the dynamic injection logic in the drmemtrace scheduler that caused the context switch sequence to be injected more times than actual context switches. It was erroneously injected also when set_cur_input was invoked without any change to the input.

update_switch_stats() is a better control point for switch sequence injection, which is renamed to on_context_switch() here. Now, in the switch_insertion offline test, we have 11 context switch injections (== input-to-input + idle-to-input switches), instead of the prior 363.

We deliberately do not inject the context switch sequence on input-to-idle transitions. Note that we already inject on idle-to-input transitions, and it is not clear yet whether we want to repeat it at input-to-idle also or maybe inject some different sequence.

The above move also removes the use of get_instruction_ordinal() to determine whether switch records should be inserted. Existing logic checked for get_instruction_ordinal() > 0 to avoid inserting switch records before the very first input on an output. This does not work as required when USE_INPUT_ORDINALS is set, as then the input-local instruction ordinal instead (which is non-zero as it is not adjusted for the read-ahead instructions) is returned, which ends up inserting the switch sequence before the very first input also. A scheduler unit_test that uses USE_INPUT_ORDINALS is coming up in #7299 with more fixes.

Issue: #7157

Fixes a bug in the dynamic injection logic in the drmemtrace scheduler that caused the context switch sequence to be injected more times than actual context switches.  It was erroneously injected also when set_cur_input was invoked without any change to the input.

update_switch_stats() is a better control point for switch sequence injection, which is renamed to on_context_switch here. Now, in the switch insertion offline test, we have 11 context switch injections (== input-to-input + idle-to-input switches), instead of the prior 363

Issue: #7157
abhinav92003 added a commit that referenced this pull request Feb 25, 2025
Adds the count of instances where the context switch sequence was
injected to the schedule_stats tool output.

Modifies the switch_insertion test to use schedule_stats instead of
basic_counts. This helps reveal a bug in context switch trace template
dynamic injection logic that causes the injection to happen many more
times than the context switch events.

This diff is split out from #7302 which fixes the above bug.

Issue: #7157
Comment thread clients/drcachesim/scheduler/scheduler_impl.cpp Outdated
Comment thread clients/drcachesim/scheduler/scheduler_impl.cpp Outdated
Comment thread clients/drcachesim/scheduler/scheduler_impl.cpp Outdated
Comment thread clients/drcachesim/scheduler/scheduler_impl.cpp Outdated
Comment thread clients/drcachesim/scheduler/scheduler_impl.cpp Outdated
@abhinav92003 abhinav92003 merged commit 898d3fb into master Feb 25, 2025
@abhinav92003 abhinav92003 deleted the i7157-fix-extra-switch-inject branch February 25, 2025 21:24
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.

2 participants