perf-archive.sh 946 B

123456789101112131415161718192021222324252627282930313233343536
  1. #!/bin/bash
  2. # perf archive
  3. # Arnaldo Carvalho de Melo <acme@redhat.com>
  4. PERF_DATA=perf.data
  5. if [ $# -ne 0 ] ; then
  6. PERF_DATA=$1
  7. fi
  8. DEBUGDIR=~/.debug/
  9. BUILDIDS=$(mktemp /tmp/perf-archive-buildids.XXXXXX)
  10. NOBUILDID=0000000000000000000000000000000000000000
  11. perf buildid-list -i $PERF_DATA --with-hits | grep -v "^$NOBUILDID " > $BUILDIDS
  12. if [ ! -s $BUILDIDS ] ; then
  13. echo "perf archive: no build-ids found"
  14. rm -f $BUILDIDS
  15. exit 1
  16. fi
  17. MANIFEST=$(mktemp /tmp/perf-archive-manifest.XXXXXX)
  18. cut -d ' ' -f 1 $BUILDIDS | \
  19. while read build_id ; do
  20. linkname=$DEBUGDIR.build-id/${build_id:0:2}/${build_id:2}
  21. filename=$(readlink -f $linkname)
  22. echo ${linkname#$DEBUGDIR} >> $MANIFEST
  23. echo ${filename#$DEBUGDIR} >> $MANIFEST
  24. done
  25. tar cfj $PERF_DATA.tar.bz2 -C $DEBUGDIR -T $MANIFEST
  26. rm -f $MANIFEST $BUILDIDS
  27. echo -e "Now please run:\n"
  28. echo -e "$ tar xvf $PERF_DATA.tar.bz2 -C ~/.debug\n"
  29. echo "wherever you need to run 'perf report' on."
  30. exit 0