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

Provide a way to query cpu id for scheduler output streams #6262

Closed
prasun3 opened this issue Aug 11, 2023 · 0 comments · Fixed by #6279 · May be fixed by #6263
Closed

Provide a way to query cpu id for scheduler output streams #6262

prasun3 opened this issue Aug 11, 2023 · 0 comments · Fixed by #6279 · May be fixed by #6263
Assignees

Comments

@prasun3
Copy link
Contributor

prasun3 commented Aug 11, 2023

Add a pointer to any prior users list discussion.
https://groups.google.com/g/DynamoRIO-Users/c/mSbhO2PRz90

While running in MAP_TO_RECORDED_OUTPUT mode, we need a way to query which cpu is running on a given output stream.

Is your feature request related to a problem? Please describe.
During simulation, we may want to preserve CPU numbering to reflect the original topology.

Describe the solution you'd like
We could have an API e.g., scheduler.get_output_cpuid(ordinal)

Do you have any implementation in mind for this feature?
Yes

Describe alternatives you've considered
None

Additional context
None

@prasun3 prasun3 self-assigned this Aug 11, 2023
prasun3 added a commit that referenced this issue Aug 11, 2023
Added an API to query cpu id

Issue: #6262
@prasun3 prasun3 linked a pull request Aug 11, 2023 that will close this issue
prasun3 added a commit that referenced this issue Aug 11, 2023
prasun3 added a commit that referenced this issue Aug 11, 2023
derekbruening added a commit that referenced this issue Aug 25, 2023
Adds a new type of sharding for drmemtrace analysis tools: by core
instead of by thread.

Introduces a shard_type_t enum (SHARD_BY_THREAD and SHARD_BY_CORE)
passed to a new analysis_tool_t::initialize_shard_type() function to
inform tools of the shard type (this cannot be easily added to the
stream interface as the scheduler is not aware of the shard type).

Adds a new memtrace_stream_t::get_output_cpuid() query to get the
output cpu ordinal, or for replaying as-traced the original traced
cpuid (#6262).  Implements this for the scheduler.

Generalizes analyzer_t to take in scheduler options for SHARD_BY_CORE
to support analysis tools using the full range of schedules.  In this
mode, the core count is the worker count.  Updates the shard index to
be the core ordinal.  Adds time-based scheduling support with
analyzer_t using wall-clock time as the current time.

Adds a number of options to set sharding mode (-core_sharding,
-core_serial (not yet implemented)) and control the schedule
(-sched_quantum, -sched_time, sched_order_time, -record_file,
-replay_file, -cpu_schedule_file).

Updates the basic_counts tool to support core sharding.

Adds a new test core_sharded_test which leverages the analyzer_multi
and option parsing to test the top-level options within a framework
that can capture the output and run multiple tests sequentially in a
simpler framework than having a separate test with an output file for
each parameter being tested.

Left as future work:
+ Convert scheduler_launcher into a new schedule_stats tool
+ Add a new record to indicate STATUS_WAIT
+ Add -core_serial support
+ Convert drcachesim default and -cpu_scheduling to use
  get_output_cpuid()

Issue: #5694
derekbruening added a commit that referenced this issue Aug 31, 2023
Adds a new type of sharding for drmemtrace analysis tools: by core
instead of by thread.

Introduces a shard_type_t enum (SHARD_BY_THREAD and SHARD_BY_CORE)
passed to a new analysis_tool_t::initialize_shard_type() function to
inform tools of the shard type (this cannot be easily added to the
stream interface as the scheduler is not aware of the shard type).

Adds a new memtrace_stream_t::get_output_cpuid() query to get the output
cpu ordinal, or for replaying as-traced the original traced cpuid
(#6262). Implements this for the scheduler. This addresses #6262.

Generalizes analyzer_t to take in scheduler options for SHARD_BY_CORE to
support analysis tools using the full range of schedules. In this mode,
the core count is the worker count. Updates the shard index to be the
core ordinal. Adds time-based scheduling support with analyzer_t using
wall-clock time as the current time.

Adds a number of options to set sharding mode (-core_sharding,
-core_serial (not yet implemented)) and control the schedule
(-sched_quantum, -sched_time, sched_order_time, -record_file,
-replay_file, -cpu_schedule_file).

Updates the basic_counts tool to support core sharding.

Adds a new test core_sharded_test which leverages the analyzer_multi and
option parsing to test the top-level options within a framework that can
capture the output and run multiple tests sequentially in a simpler
framework than having a separate test with an output file for each
parameter being tested.

Left as future work:
+ Convert scheduler_launcher into a new schedule_stats tool
+ Add a new record to indicate STATUS_WAIT
+ Add -core_serial support
+ Convert drcachesim default and -cpu_scheduling to use
get_output_cpuid()

Issue: #5694, #6262
Fixes #6262
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
1 participant