dynamorio::drmemtrace::noise_generator_t Class Reference

#include <noise_generator.h>

Inheritance diagram for dynamorio::drmemtrace::noise_generator_t:
dynamorio::drmemtrace::reader_t dynamorio::drmemtrace::memtrace_stream_t

Public Member Functions

std::string get_stream_name () const override
 
- Public Member Functions inherited from dynamorio::drmemtrace::reader_t
uint64_t get_record_ordinal () const override
 
uint64_t get_instruction_ordinal () const override
 
uint64_t get_last_timestamp () const override
 
uint64_t get_first_timestamp () const override
 
uint64_t get_version () const override
 
uint64_t get_filetype () const override
 
uint64_t get_cache_line_size () const override
 
uint64_t get_chunk_instr_count () const override
 
uint64_t get_page_size () const override
 
bool is_record_kernel () const override
 
bool is_record_synthetic () const override
 
- Public Member Functions inherited from dynamorio::drmemtrace::memtrace_stream_t
virtual ~memtrace_stream_t ()
 
virtual int get_shard_index () const
 
virtual int64_t get_output_cpuid () const
 
virtual int64_t get_workload_id () const
 
virtual int64_t get_input_id () const
 
virtual int64_t get_tid () const
 
virtual memtrace_stream_tget_input_interface () const
 
virtual double get_schedule_statistic (schedule_statistic_t stat) const
 

Additional Inherited Members

- Public Types inherited from dynamorio::drmemtrace::memtrace_stream_t
enum  schedule_statistic_t {
  SCHED_STAT_SWITCH_INPUT_TO_INPUT ,
  SCHED_STAT_SWITCH_INPUT_TO_IDLE ,
  SCHED_STAT_SWITCH_IDLE_TO_INPUT ,
  SCHED_STAT_SWITCH_NOP ,
  SCHED_STAT_QUANTUM_PREEMPTS ,
  SCHED_STAT_DIRECT_SWITCH_ATTEMPTS ,
  SCHED_STAT_DIRECT_SWITCH_SUCCESSES ,
  SCHED_STAT_MIGRATIONS ,
  SCHED_STAT_RUNQUEUE_STEALS ,
  SCHED_STAT_RUNQUEUE_REBALANCES ,
  SCHED_STAT_HIT_OUTPUT_LIMIT ,
  SCHED_STAT_KERNEL_SWITCH_SEQUENCE_INJECTIONS ,
  SCHED_STAT_KERNEL_SYSCALL_SEQUENCE_INJECTIONS ,
  SCHED_STAT_TYPE_COUNT
}
 

Detailed Description

Generates synthetic dynamorio::drmemtrace::memref_t trace records in a single-process single-thread and presents them via an iterator interface to the scheduler. These synthetic trace records are preceded by TRACE_TYPE_THREAD, TRACE_TYPE_PID, TRACE_MARKER_TYPE_TIMESTAMP records and followed by TRACE_TYPE_THREAD_EXIT, as this is the order of records that the scheduler expects. The value of TRACE_MARKER_TYPE_TIMESTAMP is (ULONG_MAX - 1), which is not a serial-or-interval-suited timestamp value for mixing with real workload inputs. A serial analysis combined with real workload inputs would have these synthetic records at the very end, while time interval analysis would not consider these records unless the interval is very large (likely beyond the end of real input workloads). Noise generation is suited for dynamic scheduling, where the scheduler will re-write the values of TRACE_MARKER_TYPE_TIMESTAMP. Note that this class does not support simultaneous use by concurrent threads.

Member Function Documentation

◆ get_stream_name()

std::string dynamorio::drmemtrace::noise_generator_t::get_stream_name ( ) const
overridevirtual

Returns a name for the memtrace stream. For stored offline traces, this is the base name of the trace on disk. For online traces, this is the name of the pipe.

Implements dynamorio::drmemtrace::memtrace_stream_t.


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