• Adrian Hunter's avatar
    perf scripts python: export-to-sqlite.py: Export IPC information · 64adadb3
    Adrian Hunter authored
    Export cycle and instruction counts on samples and calls tables.
    
    Committer testing:
    
    First runs some workload collecting intel_pt with the 'cyc' ter just for
    userspace:
    
      [root@quaco adrian.hunter]# perf record -o simple-retpoline.perf.data -e intel_pt/cyc/u ./simple-retpoline
      [ perf record: Woken up 1 times to write data ]
      [ perf record: Captured and wrote 0.035 MB simple-retpoline.perf.data ]
      [root@quaco adrian.hunter]#
    
    Then use the export-to-sqlite.py script to see if the changes in this
    cset don't make it to break and if the changes in the db schema are the
    ones expected:
    
      [root@quaco adrian.hunter]# perf script -i simple-retpoline.perf.data --itrace=be -s ~acme/libexec/perf-core/scripts/python/export-to-sqlite.py simple-retpoline.db branches calls
      2019-05-31 11:50:46.942710 Creating database ...
      2019-05-31 11:50:46.949663 Writing records...
      2019-05-31 11:50:47.224033 Adding indexes
      2019-05-31 11:50:47.231599 Done
      [root@quaco adrian.hunter]#
    
    Now lets use the db:
    
      [root@quaco adrian.hunter]# sqlite3 simple-retpoline.db
      SQLite version 3.26.0 2018-12-01 12:34:55
      Enter ".help" for usage hints.
      sqlite> .schema samples
      CREATE TABLE samples (id integer NOT NULL PRIMARY KEY,evsel_id bigint,machine_id bigint,thread_id bigint,comm_id bigint,dso_id bigint,symbol_id bigint,sym_offset bigint,ip bigint,time bigint,cpuinteger,to_dso_id bigint,to_symbol_id bigint,to_sym_offset bigint,to_ip bigint,branch_type integer,in_tx boolean,call_path_id bigint,insn_count bigint,cyc_count bigint);
      sqlite>
    
    Cool, the 'insn_count' and 'cyc_count' are there, now lets see if we can
    use them in a query:
    
      sqlite> select insn_count,cyc_count from samples where cyc_count > 1500 and insn_count < 10;
      6|1507
      sqlite> select insn_count,cyc_count from samples where cyc_count > 1500;
      118|2210
      140|1516
      3783|1861
      132|1521
      6|1507
      sqlite>
    
    Seems to work :-)
    Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
    Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Link: http://lkml.kernel.org/r/20190520113728.14389-17-adrian.hunter@intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    64adadb3
export-to-sqlite.py 14.8 KB