dynamorio::drmemtrace::scheduler_tmpl_t< RecordType, ReaderType >::input_thread_info_t Struct Reference

#include <scheduler.h>

Public Member Functions

 input_thread_info_t (std::vector< range_t > regions)
 
 input_thread_info_t (memref_tid_t tid, std::vector< range_t > regions)
 
 input_thread_info_t (memref_tid_t tid, int priority)
 
 input_thread_info_t (std::set< output_ordinal_t > output_binding)
 
 input_thread_info_t (memref_tid_t tid, std::set< output_ordinal_t > output_binding)
 

Data Fields

size_t struct_size = sizeof(input_thread_info_t)
 
std::vector< memref_tid_ttids
 
std::vector< int > shards
 
std::set< output_ordinal_toutput_binding
 
int priority = 0
 
std::vector< range_tregions_of_interest
 

Detailed Description

template<typename RecordType, typename ReaderType>
struct dynamorio::drmemtrace::scheduler_tmpl_t< RecordType, ReaderType >::input_thread_info_t

Specifies details about one set of input trace files from one workload. Each input file typically represents either one software thread ("thread-sharded") or one hardware thread ("core-sharded"). The details in this struct apply to the inputs listed in the 'tids' (for thread-sharded, if identifying by tid) or 'shards' (for any sharding, if identifying by ordinal). When using 'tids' it is assumed that there is no thread id duplication within one workload.

Constructor & Destructor Documentation

◆ input_thread_info_t() [1/5]

template<typename RecordType , typename ReaderType >
dynamorio::drmemtrace::scheduler_tmpl_t< RecordType, ReaderType >::input_thread_info_t::input_thread_info_t ( std::vector< range_t regions)
inlineexplicit

Convenience constructor for common usage.

◆ input_thread_info_t() [2/5]

template<typename RecordType , typename ReaderType >
dynamorio::drmemtrace::scheduler_tmpl_t< RecordType, ReaderType >::input_thread_info_t::input_thread_info_t ( memref_tid_t  tid,
std::vector< range_t regions 
)
inline

Convenience constructor for common usage.

◆ input_thread_info_t() [3/5]

template<typename RecordType , typename ReaderType >
dynamorio::drmemtrace::scheduler_tmpl_t< RecordType, ReaderType >::input_thread_info_t::input_thread_info_t ( memref_tid_t  tid,
int  priority 
)
inline

Convenience constructor for common usage.

◆ input_thread_info_t() [4/5]

template<typename RecordType , typename ReaderType >
dynamorio::drmemtrace::scheduler_tmpl_t< RecordType, ReaderType >::input_thread_info_t::input_thread_info_t ( std::set< output_ordinal_t output_binding)
inline

Convenience constructor for placing all threads for one workload on a set of cores for a static partitioning.

◆ input_thread_info_t() [5/5]

template<typename RecordType , typename ReaderType >
dynamorio::drmemtrace::scheduler_tmpl_t< RecordType, ReaderType >::input_thread_info_t::input_thread_info_t ( memref_tid_t  tid,
std::set< output_ordinal_t output_binding 
)
inline

Convenience constructor for placing one thread on a set of cores.

Field Documentation

◆ output_binding

template<typename RecordType , typename ReaderType >
std::set<output_ordinal_t> dynamorio::drmemtrace::scheduler_tmpl_t< RecordType, ReaderType >::input_thread_info_t::output_binding

Limits these threads to this set of output streams, which are specified by ordinal 0 through the output count minus oner. They will not be scheduled on any other output streams.

◆ priority

template<typename RecordType , typename ReaderType >
int dynamorio::drmemtrace::scheduler_tmpl_t< RecordType, ReaderType >::input_thread_info_t::priority = 0

Relative priority for scheduling. The default is 0. Higher values have higher priorities and will starve lower-priority inputs. Higher priorities out-weigh dependencies such as DEPENDENCY_TIMESTAMPS.

◆ regions_of_interest

template<typename RecordType , typename ReaderType >
std::vector<range_t> dynamorio::drmemtrace::scheduler_tmpl_t< RecordType, ReaderType >::input_thread_info_t::regions_of_interest

If non-empty, all input records outside of these ranges are skipped: it is as though the input were constructed by concatenating these ranges together. A TRACE_MARKER_TYPE_WINDOW_ID marker is inserted between ranges (with a value equal to the range ordinal) to notify the client of the discontinuity. This marker is inserted between back-to-back regions with no separation, but it is not inserted prior to the first range. A dynamorio::drmemtrace::TRACE_TYPE_THREAD_EXIT record is inserted after the final range. These ranges must be non-overlapping and in increasing order.

Be aware that selecting a subset of code can remove inter-input communication steps that could be required for forward progress. For example, if selected subsets include TRACE_MARKER_TYPE_SYSCALL_UNSCHEDULE with no timeout but do not include a corresponding TRACE_MARKER_TYPE_SYSCALL_SCHEDULE for wakeup, an input could remain unscheduled.

Also beware that this can skip over trace header entries (like TRACE_MARKER_TYPE_FILETYPE), which should ideally be obtained from the dynamorio::drmemtrace::memtrace_stream_t API instead.

◆ shards

template<typename RecordType , typename ReaderType >
std::vector<int> dynamorio::drmemtrace::scheduler_tmpl_t< RecordType, ReaderType >::input_thread_info_t::shards

Which inputs the details in this structure apply to, expressed as 0-based ordinals in the 'readers' vector or in the files opened at 'path' (which are sorted lexicographically by path) in the containing dynamorio::drmemtrace::scheduler_tmpl_t::input_workload_t. Only one of 'tids' and 'shards' can be non-empty. If 'tids' is empty and 'shards' is empty, the details apply to all not-yet-mentioned (by other 'tids' or 'shards' vectors in prior entries for this workload) inputs in the dynamorio::drmemtrace::scheduler_tmpl_t::input_workload_t. If multiple entries list the same shard ordinal, only the last one is honored.

◆ struct_size

template<typename RecordType , typename ReaderType >
size_t dynamorio::drmemtrace::scheduler_tmpl_t< RecordType, ReaderType >::input_thread_info_t::struct_size = sizeof(input_thread_info_t)

Size of the struct. Not used as this structure cannot support binary-compatible additions due to limits of C++ offsetof support with some implementations of std::set where it is not a standard-layout class: thus, changes here require recompiling tools using this code.

◆ tids

template<typename RecordType , typename ReaderType >
std::vector<memref_tid_t> dynamorio::drmemtrace::scheduler_tmpl_t< RecordType, ReaderType >::input_thread_info_t::tids

Which input threads the details in this structure apply to. Only one of 'tids' and 'shards' can be non-empty. If 'tids' is empty and 'shards' is empty, the details apply to all unmentioned (by other 'tids' or 'shards' vectors in other entries for this workload) inputs in the dynamorio::drmemtrace::scheduler_tmpl_t::input_workload_t. When using 'tids' it is assumed that there is no thread id duplication within one workload. If multiple entries list the same tid, only the last one is honored.


The documentation for this struct was generated from the following file:
  • /home/runner/work/dynamorio/dynamorio/build_release-64/clients/include/drmemtrace/scheduler.h