22 from typing
import List, Dict
23 from req_utils
import *
29 fom_desc_d =
query2dlist(fom_desc.select().where((fom_desc.fom_sm_id==fom_id)&
31 assert(len(fom_desc_d) == 1)
32 fom_state_id = fom_desc_d[0][
'fom_state_sm_id']
34 fom_req_st_d =
query2dlist(fom_req_state.select().where((fom_req_state.id==fom_state_id)&(fom_req_state.pid==pid)))
36 time_table.append(fom_req_st_d)
38 fom_req_d =
query2dlist(fom_req.select().where((fom_req.id==fom_id)&(fom_req.pid==pid)))
40 time_table.append(fom_req_d)
42 stob_ids =
query2dlist(fom_to_stio.select().where((fom_to_stio.fom_id==fom_id)&(fom_to_stio.pid==pid)))
45 stio_d =
query2dlist(stio_req.select().where((stio_req.id==sid[
'stio_id'])&(stio_req.pid==pid)))
47 time_table.append(stio_d)
49 tx_ids =
query2dlist(fom_to_tx.select().where((fom_to_tx.fom_id==fom_id)&(fom_to_tx.pid==pid)))
52 tx_d =
query2dlist(be_tx.select().where((be_tx.id==tx[
'tx_id'])&(be_tx.pid==pid)))
54 time_table.append(tx_d)
62 parser = argparse.ArgumentParser(prog=sys.argv[0], description=
""" 63 fom_req.py: Display FOM-related timelines. 65 parser.add_argument(
"-f",
"--fom-id", type=int, required=
True,
67 parser.add_argument(
"-p",
"--pid", type=int, required=
True,
68 help=
"Server pid to get FOM phases")
69 parser.add_argument(
"-v",
"--verbose", action=
'count', default=0)
70 parser.add_argument(
"-u",
"--time-unit", choices=[
'ms',
'us'], default=
'us',
71 help=
"Default time unit")
72 parser.add_argument(
"-m",
"--maximize", action=
'store_true',
73 help=
"Display in maximised window")
74 parser.add_argument(
"-d",
"--db", type=str, default=
"m0play.db",
75 help=
"Performance database (m0play.db)")
77 return parser.parse_args()
79 if __name__ ==
'__main__':
85 print(
"Getting timelines...")
91 print(
"Plotting timelines...")
93 draw_timelines(time_table,
None, 0, 0, args.time_unit,
False, args.maximize)
def prepare_time_table(time_table)
static M0_UNUSED void print(struct m0_be_list *list)