pm_ilb_test.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #!/usr/bin/env python3
  2. ''' This Python script interprets interrupt values.
  3. Validates Ideal load balancer runs in same package where workload is running
  4. '''
  5. import os
  6. import sys
  7. from optparse import OptionParser
  8. from pm_sched_mc import *
  9. __author__ = "Poornima Nayak <mpnayak@linux.vnet.ibm.com>"
  10. class Usage(Exception):
  11. def __init__(self, msg):
  12. self.msg = msg
  13. def main(argv=None):
  14. if argv is None:
  15. argv = sys.argv
  16. usage = "-w"
  17. parser = OptionParser(usage)
  18. parser.add_option("-c", "--mc_level", dest="mc_level",
  19. default=0, help="Sched mc power saving value 0/1/2")
  20. parser.add_option("-t", "--smt_level", dest="smt_level",
  21. default=0, help="Sched smt power saving value 0/1/2")
  22. parser.add_option("-w", "--workload", dest="work_ld",
  23. default="ebizzy", help="Workload can be ebizzy/kernbench")
  24. (options, args) = parser.parse_args()
  25. try:
  26. count_num_cpu()
  27. count_num_sockets()
  28. if is_multi_socket():
  29. set_sched_mc_power(options.mc_level)
  30. if is_hyper_threaded():
  31. set_sched_smt_power(options.smt_level)
  32. map_cpuid_pkgid()
  33. print("INFO: Created table mapping cpu to package")
  34. background="no"
  35. duration=120
  36. pinned="yes"
  37. trigger_workld(options.smt_level,options.work_ld, "single_job", duration, background, pinned, "no")
  38. generate_loc_intr_report()
  39. status = validate_ilb(options.mc_level, options.smt_level)
  40. reset_schedmc()
  41. if is_hyper_threaded():
  42. reset_schedsmt()
  43. return(status)
  44. except Exception as details:
  45. print("INFO: Idle Load Balancer test failed", details)
  46. return(1)
  47. if __name__ == "__main__":
  48. sys.exit(main())