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#6426: Add schedule_stats tool #6442

Merged
merged 5 commits into from
Nov 11, 2023
Merged

Conversation

derekbruening
Copy link
Contributor

Adds a new analysis tool "schedule_stats" which computes characteristics of a core-sharded schedule. This is meant to help in understanding and studying the effects of varying the scheduler parameters.

This initial version counts instructions, blocking and all syscalls, voluntary and direct switches, and direct requests, and computes derived statistics CSPKI, I/CS, %voluntary, and %direct switches. Failed direct requests can be inferred.

The tool also records a string of letters representing input threads to help visualize the thread interleaving on each core. The number of instructions per leter is controlled by a new parameter -print_every. This string visualization has its limits as more than 26 inputs will wrap around, but this approach has been useful in our unit tests and other small runs.

Adds a regression test which runs the checked-in threadsig trace.

Issue: #6426

Adds a new analysis tool "schedule_stats" which computes
characteristics of a core-sharded schedule.  This is meant to help in
understanding and studying the effects of varying the scheduler
parameters.

This initial version counts instructions, blocking and all syscalls,
voluntary and direct switches, and direct requests, and computes
derived statistics CSPKI, I/CS, %voluntary, and %direct switches.
Failed direct requests can be inferred.

The tool also records a string of letters representing input threads
to help visualize the thread interleaving on each core.  The number of
instructions per leter is controlled by a new parameter -print_every.
This string visualization has its limits as more than 26 inputs will
wrap around, but this approach has been useful in our unit tests and
other small runs.

Adds a regression test which runs the checked-in threadsig trace.

Issue: #6426
@derekbruening
Copy link
Contributor Author

win32 and x64 failures: floatpc #2267, fixed by waiting-for-review #6441
ub22 failure: api.rseq #6185

clients/drcachesim/tools/schedule_stats_create.h Outdated Show resolved Hide resolved
clients/drcachesim/tools/schedule_stats.cpp Outdated Show resolved Hide resolved
clients/drcachesim/tools/schedule_stats.cpp Outdated Show resolved Hide resolved
clients/drcachesim/tools/schedule_stats.cpp Outdated Show resolved Hide resolved
clients/drcachesim/tools/schedule_stats.cpp Outdated Show resolved Hide resolved
clients/drcachesim/tools/schedule_stats.cpp Outdated Show resolved Hide resolved
clients/drcachesim/common/options.h Show resolved Hide resolved
clients/drcachesim/common/options.cpp Outdated Show resolved Hide resolved
@derekbruening
Copy link
Contributor Author

Progress: we're down to just one test failing here. x86-32: it's the set of failures in #6417.

@derekbruening derekbruening merged commit a633603 into master Nov 11, 2023
14 of 15 checks passed
@derekbruening derekbruening deleted the i6426-schedule-stats-tool branch November 11, 2023 22:30
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