diff options
Diffstat (limited to 'tools/perf/scripts/python')
| -rw-r--r-- | tools/perf/scripts/python/export-to-sqlite.py | 36 |
1 files changed, 24 insertions, 12 deletions
diff --git a/tools/perf/scripts/python/export-to-sqlite.py b/tools/perf/scripts/python/export-to-sqlite.py index f617e518332f..4542ce89034b 100644 --- a/tools/perf/scripts/python/export-to-sqlite.py +++ b/tools/perf/scripts/python/export-to-sqlite.py | |||
| @@ -218,7 +218,9 @@ if branches: | |||
| 218 | 'to_ip bigint,' | 218 | 'to_ip bigint,' |
| 219 | 'branch_type integer,' | 219 | 'branch_type integer,' |
| 220 | 'in_tx boolean,' | 220 | 'in_tx boolean,' |
| 221 | 'call_path_id bigint)') | 221 | 'call_path_id bigint,' |
| 222 | 'insn_count bigint,' | ||
| 223 | 'cyc_count bigint)') | ||
| 222 | else: | 224 | else: |
| 223 | do_query(query, 'CREATE TABLE samples (' | 225 | do_query(query, 'CREATE TABLE samples (' |
| 224 | 'id integer NOT NULL PRIMARY KEY,' | 226 | 'id integer NOT NULL PRIMARY KEY,' |
| @@ -242,7 +244,9 @@ else: | |||
| 242 | 'data_src bigint,' | 244 | 'data_src bigint,' |
| 243 | 'branch_type integer,' | 245 | 'branch_type integer,' |
| 244 | 'in_tx boolean,' | 246 | 'in_tx boolean,' |
| 245 | 'call_path_id bigint)') | 247 | 'call_path_id bigint,' |
| 248 | 'insn_count bigint,' | ||
| 249 | 'cyc_count bigint)') | ||
| 246 | 250 | ||
| 247 | if perf_db_export_calls or perf_db_export_callchains: | 251 | if perf_db_export_calls or perf_db_export_callchains: |
| 248 | do_query(query, 'CREATE TABLE call_paths (' | 252 | do_query(query, 'CREATE TABLE call_paths (' |
| @@ -263,7 +267,9 @@ if perf_db_export_calls: | |||
| 263 | 'return_id bigint,' | 267 | 'return_id bigint,' |
| 264 | 'parent_call_path_id bigint,' | 268 | 'parent_call_path_id bigint,' |
| 265 | 'flags integer,' | 269 | 'flags integer,' |
| 266 | 'parent_id bigint)') | 270 | 'parent_id bigint,' |
| 271 | 'insn_count bigint,' | ||
| 272 | 'cyc_count bigint)') | ||
| 267 | 273 | ||
| 268 | # printf was added to sqlite in version 3.8.3 | 274 | # printf was added to sqlite in version 3.8.3 |
| 269 | sqlite_has_printf = False | 275 | sqlite_has_printf = False |
| @@ -359,6 +365,9 @@ if perf_db_export_calls: | |||
| 359 | 'return_time,' | 365 | 'return_time,' |
| 360 | 'return_time - call_time AS elapsed_time,' | 366 | 'return_time - call_time AS elapsed_time,' |
| 361 | 'branch_count,' | 367 | 'branch_count,' |
| 368 | 'insn_count,' | ||
| 369 | 'cyc_count,' | ||
| 370 | 'CASE WHEN cyc_count=0 THEN CAST(0 AS FLOAT) ELSE ROUND(CAST(insn_count AS FLOAT) / cyc_count, 2) END AS IPC,' | ||
| 362 | 'call_id,' | 371 | 'call_id,' |
| 363 | 'return_id,' | 372 | 'return_id,' |
| 364 | 'CASE WHEN flags=0 THEN \'\' WHEN flags=1 THEN \'no call\' WHEN flags=2 THEN \'no return\' WHEN flags=3 THEN \'no call/return\' WHEN flags=6 THEN \'jump\' ELSE flags END AS flags,' | 373 | 'CASE WHEN flags=0 THEN \'\' WHEN flags=1 THEN \'no call\' WHEN flags=2 THEN \'no return\' WHEN flags=3 THEN \'no call/return\' WHEN flags=6 THEN \'jump\' ELSE flags END AS flags,' |
| @@ -384,7 +393,10 @@ do_query(query, 'CREATE VIEW samples_view AS ' | |||
| 384 | 'to_sym_offset,' | 393 | 'to_sym_offset,' |
| 385 | '(SELECT short_name FROM dsos WHERE id = to_dso_id) AS to_dso_short_name,' | 394 | '(SELECT short_name FROM dsos WHERE id = to_dso_id) AS to_dso_short_name,' |
| 386 | '(SELECT name FROM branch_types WHERE id = branch_type) AS branch_type_name,' | 395 | '(SELECT name FROM branch_types WHERE id = branch_type) AS branch_type_name,' |
| 387 | 'in_tx' | 396 | 'in_tx,' |
| 397 | 'insn_count,' | ||
| 398 | 'cyc_count,' | ||
| 399 | 'CASE WHEN cyc_count=0 THEN CAST(0 AS FLOAT) ELSE ROUND(CAST(insn_count AS FLOAT) / cyc_count, 2) END AS IPC' | ||
| 388 | ' FROM samples') | 400 | ' FROM samples') |
| 389 | 401 | ||
| 390 | do_query(query, 'END TRANSACTION') | 402 | do_query(query, 'END TRANSACTION') |
| @@ -407,15 +419,15 @@ branch_type_query = QSqlQuery(db) | |||
| 407 | branch_type_query.prepare("INSERT INTO branch_types VALUES (?, ?)") | 419 | branch_type_query.prepare("INSERT INTO branch_types VALUES (?, ?)") |
| 408 | sample_query = QSqlQuery(db) | 420 | sample_query = QSqlQuery(db) |
| 409 | if branches: | 421 | if branches: |
| 410 | sample_query.prepare("INSERT INTO samples VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)") | 422 | sample_query.prepare("INSERT INTO samples VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)") |
| 411 | else: | 423 | else: |
| 412 | sample_query.prepare("INSERT INTO samples VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)") | 424 | sample_query.prepare("INSERT INTO samples VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)") |
| 413 | if perf_db_export_calls or perf_db_export_callchains: | 425 | if perf_db_export_calls or perf_db_export_callchains: |
| 414 | call_path_query = QSqlQuery(db) | 426 | call_path_query = QSqlQuery(db) |
| 415 | call_path_query.prepare("INSERT INTO call_paths VALUES (?, ?, ?, ?)") | 427 | call_path_query.prepare("INSERT INTO call_paths VALUES (?, ?, ?, ?)") |
| 416 | if perf_db_export_calls: | 428 | if perf_db_export_calls: |
| 417 | call_query = QSqlQuery(db) | 429 | call_query = QSqlQuery(db) |
| 418 | call_query.prepare("INSERT INTO calls VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)") | 430 | call_query.prepare("INSERT INTO calls VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)") |
| 419 | 431 | ||
| 420 | def trace_begin(): | 432 | def trace_begin(): |
| 421 | printdate("Writing records...") | 433 | printdate("Writing records...") |
| @@ -427,10 +439,10 @@ def trace_begin(): | |||
| 427 | comm_table(0, "unknown") | 439 | comm_table(0, "unknown") |
| 428 | dso_table(0, 0, "unknown", "unknown", "") | 440 | dso_table(0, 0, "unknown", "unknown", "") |
| 429 | symbol_table(0, 0, 0, 0, 0, "unknown") | 441 | symbol_table(0, 0, 0, 0, 0, "unknown") |
| 430 | sample_table(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) | 442 | sample_table(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) |
| 431 | if perf_db_export_calls or perf_db_export_callchains: | 443 | if perf_db_export_calls or perf_db_export_callchains: |
| 432 | call_path_table(0, 0, 0, 0) | 444 | call_path_table(0, 0, 0, 0) |
| 433 | call_return_table(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) | 445 | call_return_table(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) |
| 434 | 446 | ||
| 435 | unhandled_count = 0 | 447 | unhandled_count = 0 |
| 436 | 448 | ||
| @@ -486,14 +498,14 @@ def sample_table(*x): | |||
| 486 | if branches: | 498 | if branches: |
| 487 | for xx in x[0:15]: | 499 | for xx in x[0:15]: |
| 488 | sample_query.addBindValue(str(xx)) | 500 | sample_query.addBindValue(str(xx)) |
| 489 | for xx in x[19:22]: | 501 | for xx in x[19:24]: |
| 490 | sample_query.addBindValue(str(xx)) | 502 | sample_query.addBindValue(str(xx)) |
| 491 | do_query_(sample_query) | 503 | do_query_(sample_query) |
| 492 | else: | 504 | else: |
| 493 | bind_exec(sample_query, 22, x) | 505 | bind_exec(sample_query, 24, x) |
| 494 | 506 | ||
| 495 | def call_path_table(*x): | 507 | def call_path_table(*x): |
| 496 | bind_exec(call_path_query, 4, x) | 508 | bind_exec(call_path_query, 4, x) |
| 497 | 509 | ||
| 498 | def call_return_table(*x): | 510 | def call_return_table(*x): |
| 499 | bind_exec(call_query, 12, x) | 511 | bind_exec(call_query, 14, x) |
