Tags: DynamoRIO/dynamorio
Tags
i#5843 scheduler: Add option to disable direct switches (#6770) Adds a new scheduler option field honor_direct_switches and a corresponding command-line parameter -sched_disable_direct_switches to allow a way to disable direct thread switches, primarily for scheduling experimentation. Adds a unit test. Issue #5843
i#6685 core-shard: Add idles and waits to basic_counts (#6754) Adds counts of idle and wait records to basic_counts, which are useful when examining core-sharded-on-disk traces. Rewords "scheduling markers" to "timestamp + cpuid markers" to clarify. Rewords "transfer markers" to "kernel transfer markers". Updates the tests; the core-serial tests non-zero output here, and the core-sharded test also manually tested non-zero output as it required removing these counts for reliable comparison of record vs replay. Issue: #6685
i#6713: Remove same-input-same-start cpu_schedule entries (#6715) Removes same-input-same-start cpu_schedule entries when reading the schedule file in the scheduler. The scheduler cannot emulate a switch with no instructions in between in replay mode, and these same-start entries cause problems. Adds a scheduler unit test. Tested on a larger app in as-traced mode where there are many of these same-start entries and without this fix the scheduler advances too early, causing problems. Fixes #6713
i#6685: Add core-sharded-on-disk analysis support (#6680) Add core-sharded-on-disk analysis support: Adds a new filetype OFFLINE_FILE_TYPE_CORE_SHARDED set by record_filter when core-sharded. Has the scheduler read ahead to the filetype in every input, and arrange to make it available at init time to output streams. The analyzer looks for the filetype and sets the shard type as core-sharded if set. This is different from a dynamic-scheduling core-sharded as we do not need a 1:1 shard:workers mapping. Allows header records in reader_t::process_input_entry(), which are now expected with core-sharded-on-disk traces. Adds core-sharded reader support for seeing only portions of some threads, where we have to relax some tid and pid checks. Checks in 6 core-sharded-on-disk x64 threadsig traces for use in a test of basic_counts analyzing them. That analysis fails without all of these framework changes. The changes to the record filter to support generating those traces in the first place will come in separately. Issue: #6685, #6635 Fixes #6685
i#6675: Collapse consecutive idle replay entries (#6673) Saves substantial file space in the drmemtrace scheduler's record-replay file when cores are idling by combining consecutive idle entries. Adds checks to all unit tests which create replay files; this requires access to the non-public record format, done via a helper class. Also tested on several real applications: for one the record file drops from 34MB to 4K, matching the size of the as-traced schedule files. Even tiny applications like threadsig show clear reductions. Consecutive idle entries were ballooning these files. Large applications had multi-GB files; with this fix they are orders of magnitude smaller. Issue: #6471, #6675 Fixes: #6675
i#6635 core filter, part 2: Add record filter to dr$sim launcher (#6661) Adds "-simulator_type record_filter" support to the dr$sim launcher. This builds on the templatized analyzer_multi_t to enable using record readers and record tools. Adds a record_filter_tool_create() function and moves the filter creation out of record_filter_launcher. Adds dr$sim launcher options -filter_stop_timestamp, -filter_cache_size, -filter_trace_types, -filter_marker_types, -trim_before_timestamp, and -trim_after_timestamp. Changes the trim test to use the dr$sim launcher. Adds a section on the record filter to the drmemtrace tools documentation. Issue: #6635