perf script python: Add printdate function to SQL exporters
Introduce a printdate function to eliminate the repetitive use of datetime.datetime.today() in the SQL exporting scripts. Signed-off-by: Tony Jones <tonyj@suse.de> Acked-by: Adrian Hunter <adrian.hunter@intel.com> Link: http://lkml.kernel.org/r/20190309000518.2438-5-tonyj@suse.de Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
ebf6c5c181
commit
49f93bbf17
|
@ -251,6 +251,9 @@ perf_db_export_callchains = False
|
|||
def printerr(*args, **kw_args):
|
||||
print(*args, file=sys.stderr, **kw_args)
|
||||
|
||||
def printdate(*args, **kw_args):
|
||||
print(datetime.datetime.today(), *args, sep=' ', **kw_args)
|
||||
|
||||
def usage():
|
||||
printerr("Usage is: export-to-postgresql.py <database name> [<columns>] [<calls>] [<callchains>]")
|
||||
printerr("where: columns 'all' or 'branches'")
|
||||
|
@ -289,7 +292,7 @@ def do_query(q, s):
|
|||
return
|
||||
raise Exception("Query failed: " + q.lastError().text())
|
||||
|
||||
print(datetime.datetime.today(), "Creating database...")
|
||||
printdate("Creating database...")
|
||||
|
||||
db = QSqlDatabase.addDatabase('QPSQL')
|
||||
query = QSqlQuery(db)
|
||||
|
@ -582,7 +585,7 @@ if perf_db_export_calls:
|
|||
call_file = open_output_file("call_table.bin")
|
||||
|
||||
def trace_begin():
|
||||
print(datetime.datetime.today(), "Writing to intermediate files...")
|
||||
printdate("Writing to intermediate files...")
|
||||
# id == 0 means unknown. It is easier to create records for them than replace the zeroes with NULLs
|
||||
evsel_table(0, "unknown")
|
||||
machine_table(0, 0, "unknown")
|
||||
|
@ -598,7 +601,7 @@ def trace_begin():
|
|||
unhandled_count = 0
|
||||
|
||||
def trace_end():
|
||||
print(datetime.datetime.today(), "Copying to database...")
|
||||
printdate("Copying to database...")
|
||||
copy_output_file(evsel_file, "selected_events")
|
||||
copy_output_file(machine_file, "machines")
|
||||
copy_output_file(thread_file, "threads")
|
||||
|
@ -613,7 +616,7 @@ def trace_end():
|
|||
if perf_db_export_calls:
|
||||
copy_output_file(call_file, "calls")
|
||||
|
||||
print(datetime.datetime.today(), "Removing intermediate files...")
|
||||
printdate("Removing intermediate files...")
|
||||
remove_output_file(evsel_file)
|
||||
remove_output_file(machine_file)
|
||||
remove_output_file(thread_file)
|
||||
|
@ -628,7 +631,7 @@ def trace_end():
|
|||
if perf_db_export_calls:
|
||||
remove_output_file(call_file)
|
||||
os.rmdir(output_dir_name)
|
||||
print(datetime.datetime.today(), "Adding primary keys")
|
||||
printdate("Adding primary keys")
|
||||
do_query(query, 'ALTER TABLE selected_events ADD PRIMARY KEY (id)')
|
||||
do_query(query, 'ALTER TABLE machines ADD PRIMARY KEY (id)')
|
||||
do_query(query, 'ALTER TABLE threads ADD PRIMARY KEY (id)')
|
||||
|
@ -643,7 +646,7 @@ def trace_end():
|
|||
if perf_db_export_calls:
|
||||
do_query(query, 'ALTER TABLE calls ADD PRIMARY KEY (id)')
|
||||
|
||||
print(datetime.datetime.today(), "Adding foreign keys")
|
||||
printdate("Adding foreign keys")
|
||||
do_query(query, 'ALTER TABLE threads '
|
||||
'ADD CONSTRAINT machinefk FOREIGN KEY (machine_id) REFERENCES machines (id),'
|
||||
'ADD CONSTRAINT processfk FOREIGN KEY (process_id) REFERENCES threads (id)')
|
||||
|
@ -679,8 +682,8 @@ def trace_end():
|
|||
do_query(query, 'CREATE INDEX pid_idx ON calls (parent_id)')
|
||||
|
||||
if (unhandled_count):
|
||||
print(datetime.datetime.today(), "Warning: ", unhandled_count, " unhandled events")
|
||||
print(datetime.datetime.today(), "Done")
|
||||
printdate("Warning: ", unhandled_count, " unhandled events")
|
||||
printdate("Done")
|
||||
|
||||
def trace_unhandled(event_name, context, event_fields_dict):
|
||||
global unhandled_count
|
||||
|
|
|
@ -65,6 +65,9 @@ perf_db_export_callchains = False
|
|||
def printerr(*args, **keyword_args):
|
||||
print(*args, file=sys.stderr, **keyword_args)
|
||||
|
||||
def printdate(*args, **kw_args):
|
||||
print(datetime.datetime.today(), *args, sep=' ', **kw_args)
|
||||
|
||||
def usage():
|
||||
printerr("Usage is: export-to-sqlite.py <database name> [<columns>] [<calls>] [<callchains>]");
|
||||
printerr("where: columns 'all' or 'branches'");
|
||||
|
@ -105,7 +108,7 @@ def do_query_(q):
|
|||
return
|
||||
raise Exception("Query failed: " + q.lastError().text())
|
||||
|
||||
print(datetime.datetime.today(), "Creating database ...")
|
||||
printdate("Creating database ...")
|
||||
|
||||
db_exists = False
|
||||
try:
|
||||
|
@ -383,7 +386,7 @@ if perf_db_export_calls:
|
|||
call_query.prepare("INSERT INTO calls VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)")
|
||||
|
||||
def trace_begin():
|
||||
print(datetime.datetime.today(), "Writing records...")
|
||||
printdate("Writing records...")
|
||||
do_query(query, 'BEGIN TRANSACTION')
|
||||
# id == 0 means unknown. It is easier to create records for them than replace the zeroes with NULLs
|
||||
evsel_table(0, "unknown")
|
||||
|
@ -402,14 +405,14 @@ unhandled_count = 0
|
|||
def trace_end():
|
||||
do_query(query, 'END TRANSACTION')
|
||||
|
||||
print(datetime.datetime.today(), "Adding indexes")
|
||||
printdate("Adding indexes")
|
||||
if perf_db_export_calls:
|
||||
do_query(query, 'CREATE INDEX pcpid_idx ON calls (parent_call_path_id)')
|
||||
do_query(query, 'CREATE INDEX pid_idx ON calls (parent_id)')
|
||||
|
||||
if (unhandled_count):
|
||||
print(datetime.datetime.today(), "Warning: ", unhandled_count, " unhandled events")
|
||||
print(datetime.datetime.today(), "Done")
|
||||
printdate("Warning: ", unhandled_count, " unhandled events")
|
||||
printdate("Done")
|
||||
|
||||
def trace_unhandled(event_name, context, event_fields_dict):
|
||||
global unhandled_count
|
||||
|
|
Loading…
Reference in New Issue