def target_workload_events(self): # special event indicates the start of workload barriergen = BarrierGen(self.conf.ssd_ncq_depth()) yield hostevent.ControlEvent(operation=OP_ENABLE_RECORDER) for req in barriergen.barrier_events(): yield req yield hostevent.ControlEvent(operation=OP_REC_TIMESTAMP, arg1='interest_workload_start') workload_line_iter = hostevent.FileLineIterator(self.ftlsim_event_path) event_workload_iter = hostevent.EventIterator(self.conf, workload_line_iter) total_rw_bytes = 0 for event in event_workload_iter: yield event if event.operation in [OP_READ, OP_WRITE] and event.action == 'D': total_rw_bytes += event.size if total_rw_bytes >= self.stop_on_bytes: print 'break! stop on ', self.stop_on_bytes / MB break for req in barriergen.barrier_events(): yield req yield hostevent.ControlEvent(operation=OP_REC_TIMESTAMP, arg1='interest_workload_end')
def prepfs_events(self): prepfs_line_iter = hostevent.FileLineIterator(self.mkfs_event_path) event_prepfs_iter = hostevent.EventIterator(self.conf, prepfs_line_iter) for event in event_prepfs_iter: yield event
def prepfs_events(self): prepfs_line_iter = hostevent.FileLineIterator( self.conf.get_ftlsim_events_output_path_mkfs()) event_prepfs_iter = hostevent.EventIterator(self.conf, prepfs_line_iter) for event in event_prepfs_iter: yield event
def gen_ncq_depth_table_from_event(self): if self.conf["workload_src"] == config.LBAGENERATOR: event_file_path = self.conf["lba_workload_configs"]["ftlsim_event_path"] else: event_file_path = self.conf.get_ftlsim_events_output_path() workload_line_iter = hostevent.FileLineIterator(event_file_path) event_workload_iter = hostevent.EventIterator(self.conf, workload_line_iter) parser = EventNCQParser(event_workload_iter) table = parser.parse() ncq_depth_table_path = os.path.join(self.conf['result_dir'], 'ncq_depth_timeline.txt') with open(ncq_depth_table_path, 'w') as f: f.write(utils.table_to_str(table, width=0))
def test(self): # blkparse-events-for-ftlsim.txt conf = ConfigNCQFTL() workload_line_iter = hostevent.FileLineIterator( "tests/testdata/blkparse-events-for-ftlsim.txt") event_workload_iter = hostevent.EventIterator(conf, workload_line_iter) # for event in event_workload_iter: # print str(event) parser = EventNCQParser(event_workload_iter) table = parser.parse() self.assertEqual(table[0]['pre_depth'], 0) self.assertEqual(table[0]['post_depth'], 1) self.assertEqual(table[1]['pre_depth'], 1) self.assertEqual(table[1]['post_depth'], 0)
def target_workload_events(self): # special event indicates the start of workload barriergen = BarrierGen(self.conf.ssd_ncq_depth()) yield hostevent.ControlEvent(operation=OP_ENABLE_RECORDER) for req in barriergen.barrier_events(): yield req yield hostevent.ControlEvent(operation=OP_REC_TIMESTAMP, arg1='interest_workload_start') workload_line_iter = hostevent.FileLineIterator( self.conf.get_ftlsim_events_output_path()) event_workload_iter = hostevent.EventIterator(self.conf, workload_line_iter) for event in event_workload_iter: yield event for req in barriergen.barrier_events(): yield req yield hostevent.ControlEvent(operation=OP_REC_TIMESTAMP, arg1='interest_workload_end')