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::reader_base_t dynamorio::drmemtrace::memtrace_stream_t

Public Member Functions

bool init () override
 
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::reader_base_t
uint64_t get_next_trace_pc () 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
 

Protected Member Functions

virtual trace_entry_tread_next_entry () override
 
- Protected Member Functions inherited from dynamorio::drmemtrace::reader_base_t
trace_entry_tget_next_entry ()
 
bool is_online ()
 
void clear_entry_queue ()
 
void queue_to_return_next (std::queue< trace_entry_t > &queue)
 
void queue_to_return_next (trace_entry_t &entry)
 

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
}
 
- Protected Attributes inherited from dynamorio::drmemtrace::reader_base_t
bool at_eof_ = true
 
trace_entry_t entry_copy_
 
uint64_t next_trace_pc_ = 0
 

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.

◆ init()

bool dynamorio::drmemtrace::noise_generator_t::init ( )
overridevirtual

Initializes various state for the reader. E.g., subclasses should remember to set at_eof_ to false here. Also reads the first entry by invoking operator++() so that operator*() is ready to provide one after init().

May block for reading the first entry.

Implements dynamorio::drmemtrace::reader_base_t.

◆ read_next_entry()

virtual trace_entry_t* dynamorio::drmemtrace::noise_generator_t::read_next_entry ( )
overrideprotectedvirtual

This reads the next single entry from the underlying single stream of entries.

If it returns nullptr, it will set the EOF bit to distinguish end-of-file from an error.

This is used only by dynamorio::drmemtrace::reader_base_t::get_next_entry() when needed to access the underlying source of entries. Subclasses that need the next entry should use dynamorio::drmemtrace::reader_base_t::get_next_entry() instead.

Implements dynamorio::drmemtrace::reader_base_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