#!/usr/bin/env python3
''' This Python script interprets interrupt values.
Validates Ideal load balancer runs in same package where workload is running
'''
import os
import sys
from optparse import OptionParser
from pm_sched_mc import *
__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=0, help="Sched mc power saving value 0/1/2")
parser.add_option("-t", "--smt_level", dest="smt_level",
default=0, help="Sched smt power saving value 0/1/2")
parser.add_option("-w", "--workload", dest="work_ld",
default="ebizzy", help="Workload can be ebizzy/kernbench")
(options, args) = parser.parse_args()
try:
count_num_cpu()
count_num_sockets()
if is_multi_socket():
set_sched_mc_power(options.mc_level)
if is_hyper_threaded():
set_sched_smt_power(options.smt_level)
map_cpuid_pkgid()
print("INFO: Created table mapping cpu to package")
background="no"
duration=120
pinned="yes"
trigger_workld(options.smt_level,options.work_ld, "single_job", duration, background, pinned, "no")
generate_loc_intr_report()
status = validate_ilb(options.mc_level, options.smt_level)
reset_schedmc()
if is_hyper_threaded():
reset_schedsmt()
return(status)
except Exception as details:
print("INFO: Idle Load Balancer test failed", details)
return(1)
if __name__ == "__main__":
sys.exit(main())