| #!/usr/bin/python |
| ''' This Python script validates sched domain information in dmesg |
| with information in sysfs topology |
| ''' |
| |
| import os |
| import sys |
| LIB_DIR = "%s/lib" % os.path.dirname(__file__) |
| sys.path.append(LIB_DIR) |
| from sched_mc import * |
| from optparse import OptionParser |
| |
| __author__ = "Poornima Nayak <mpnayak@linux.vnet.ibm.com>" |
| |
| class Usage(Exception): |
| def __init__(self, msg): |
| self.msg = msg |
| |
| def main(argv=None): |
| if argv is None: |
| argv = sys.argv |
| |
| usage = "-w" |
| parser = OptionParser(usage) |
| parser.add_option("-c", "--mc_level", dest="mc_level", default=-1, |
| help="Sched mc power saving value 0/1/2") |
| parser.add_option("-t", "--smt_level", dest="smt_level", default=-1, |
| help="Sched smt power saving value 0/1/2") |
| (options, args) = parser.parse_args() |
| |
| try: |
| clear_dmesg() |
| count_num_cpu() |
| map_cpuid_pkgid() |
| |
| if is_hyper_threaded() and int(options.smt_level) >= 0: |
| set_sched_smt_power(options.smt_level) |
| |
| if int(options.mc_level) >= 0: |
| set_sched_mc_power(options.mc_level) |
| if int(options.smt_level) >= 0 or int(options.mc_level) >= 0: |
| status = verify_sched_domain_dmesg(options.mc_level, options.smt_level) |
| reset_schedmc() |
| if is_hyper_threaded(): |
| reset_schedsmt() |
| return(status) |
| else: |
| print "INFO: Invalid arguments given" |
| return 1 |
| except Exception, details: |
| print "INFO: sched domain test failed: ", details |
| return(1) |
| |
| # Run test based on the command line arguments |
| if __name__ == "__main__": |
| sys.exit(main()) |