counting.py 897 B

123456789101112131415161718192021222324252627282930313233343536
  1. #!/usr/bin/env python3
  2. # SPDX-License-Identifier: GPL-2.0
  3. # -*- python -*-
  4. # -*- coding: utf-8 -*-
  5. import argparse
  6. import perf
  7. def main(event: str):
  8. evlist = perf.parse_events(event)
  9. for evsel in evlist:
  10. evsel.read_format = perf.FORMAT_TOTAL_TIME_ENABLED | perf.FORMAT_TOTAL_TIME_RUNNING
  11. evlist.open()
  12. evlist.enable()
  13. count = 100000
  14. while count > 0:
  15. count -= 1
  16. evlist.disable()
  17. for evsel in evlist:
  18. for cpu in evsel.cpus():
  19. for thread in evsel.threads():
  20. counts = evsel.read(cpu, thread)
  21. print(f"For {evsel} val: {counts.val} enable: {counts.ena} run: {counts.run}")
  22. evlist.close()
  23. if __name__ == '__main__':
  24. ap = argparse.ArgumentParser()
  25. ap.add_argument('-e', '--event', help="Events to open", default="cpu-clock,task-clock")
  26. args = ap.parse_args()
  27. main(args.event)