1700 def main(argv=[__name__]):
1716 (PerfSuiteArgs[
'castordir'],
1717 PerfSuiteArgs[
'TimeSizeEvents'],
1718 PerfSuiteArgs[
'IgProfEvents'],
1719 PerfSuiteArgs[
'CallgrindEvents'],
1720 PerfSuiteArgs[
'MemcheckEvents'],
1721 PerfSuiteArgs[
'cmsScimark'],
1722 PerfSuiteArgs[
'cmsScimarkLarge'],
1723 PerfSuiteArgs[
'cmsdriverOptions'],
1724 PerfSuiteArgs[
'cmsdriverPUOptions'],
1725 PerfSuiteArgs[
'stepOptions'],
1726 PerfSuiteArgs[
'quicktest'],
1727 PerfSuiteArgs[
'profilers'],
1728 PerfSuiteArgs[
'cpus'],
1729 PerfSuiteArgs[
'cores'],
1730 PerfSuiteArgs[
'prevrel'],
1731 PerfSuiteArgs[
'bypasshlt'],
1732 PerfSuiteArgs[
'runonspare'],
1733 PerfSuiteArgs[
'perfsuitedir'],
1734 PerfSuiteArgs[
'logfile'],
1735 PerfSuiteArgs[
'TimeSizeCandles'],
1736 PerfSuiteArgs[
'IgProfCandles'],
1737 PerfSuiteArgs[
'CallgrindCandles'],
1738 PerfSuiteArgs[
'MemcheckCandles'],
1739 PerfSuiteArgs[
'TimeSizePUCandles'],
1740 PerfSuiteArgs[
'IgProfPUCandles'],
1741 PerfSuiteArgs[
'CallgrindPUCandles'],
1742 PerfSuiteArgs[
'MemcheckPUCandles'],
1743 PerfSuiteArgs[
'PUInputFile'],
1744 PerfSuiteArgs[
'userInputFile'],
1745 PerfSuiteArgs[
'MailLogRecipients'],
1746 PerfSuiteArgs[
'tarball']
1747 ) = suite.optionParse(argv)
1749 if not PerfSuiteArgs[
'logfile'] ==
None:
1750 if os.path.exists(PerfSuiteArgs[
'logfile']):
1751 oldlogfile=PerfSuiteArgs[
'logfile']+
"_"+time.strftime(
"%d-%m-%Y_%H:%M:%S")
1753 mvOldLogfile=subprocess.Popen(
"mv %s %s"%(PerfSuiteArgs[
'logfile'],oldlogfile), shell=
True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
1754 mvOldLogfileExitCode=mvOldLogfile.wait()
1757 ActualLogfile = open(PerfSuiteArgs[
'logfile'],
"w")
1758 if mvOldLogfileExitCode:
1759 ActualLogfile.write(
"Please check what happened: A file named %s existed already and the attempt to move it to %s produced the following output: %s\n"%(PerfSuiteArgs[
'logfile'],oldlogfile,mvOldLogfile.stdout))
1761 ActualLogfile.write(
"***WARNING! A file named %s existed already!\n***It has been moved to %s before starting the current logfile!\n"%(PerfSuiteArgs[
'logfile'],oldlogfile))
1762 except (OSError, IOError), detail:
1763 ActualLogfile.write(
"Failed to open the intended logfile %s, detail error:\n%s"%(PerfSuiteArgs[
'logfile'],detail))
1767 ActualLogfile = open(PerfSuiteArgs[
'logfile'],
"w")
1768 except (OSError, IOError), detail:
1769 ActualLogfile.write(
"Failed to open the intended logfile %s, detail error:\n%s"%(PerfSuiteArgs[
'logfile'],detail))
1770 ActualLogfile.flush()
1773 ActualLogfile.write(
"Performance suite invoked with command line:\n")
1774 cmdline=reduce(
lambda x,y:x+
" "+y,sys.argv)
1775 ActualLogfile.write(cmdline+
"\n")
1776 ActualLogfile.flush()
1779 ActualLogfile.write(
"Initial PerfSuite Arguments:\n")
1780 for key
in PerfSuiteArgs.keys():
1781 ActualLogfile.write(
"%s %s\n"%(key,PerfSuiteArgs[key]))
1782 ActualLogfile.flush()
1786 if len(PerfSuiteArgs[
'cpus']) > 1:
1787 ActualLogfile.write(
"More than 1 cpu: threading the Performance Suite!\n")
1788 outputdir=PerfSuiteArgs[
'perfsuitedir']
1789 runonspare=PerfSuiteArgs[
'runonspare']
1790 cpus=PerfSuiteArgs[
'cpus']
1792 for core
in range(PerfSuiteArgs[
'cores']):
1793 cmsScimarkLaunch_pslist={}
1794 if (core
not in cpus):
1796 ActualLogfile.write(
"Submitting cmsScimarkLaunch.csh to run on core cpu "+str(core)+
"\n")
1797 subcmd =
"cd %s ; cmsScimarkLaunch.csh %s" % (outputdir, str(core))
1798 command=
"taskset -c %s sh -c \"%s\" &" % (str(core), subcmd)
1800 ActualLogfile.write(command+
"\n")
1803 cmsScimarkLaunch_pslist[core]=subprocess.Popen(command,shell=
True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
1804 ActualLogfile.write(
"Spawned %s \n with PID %s"%(command,cmsScimarkLaunch_pslist[core].pid))
1805 ActualLogfile.flush()
1806 PerfSuiteArgs[
'runonspare']=
False
1807 logfile=PerfSuiteArgs[
'logfile']
1815 cpudir = os.path.join(outputdir,
"cpu_%s" % cpu)
1816 if not os.path.exists(cpudir):
1818 PerfSuiteArgs[
'perfsuitedir']=cpudir
1819 PerfSuiteArgs[
'cpus']=[cpu]
1820 if PerfSuiteArgs[
'logfile']:
1821 PerfSuiteArgs[
'logfile']=os.path.join(cpudir,os.path.basename(PerfSuiteArgs[
'logfile']))
1823 PerfSuiteArgs[
'logfile']=os.path.join(cpudir,
"cmsPerfSuiteThread.log")
1825 suitethread[cpu]=PerfThread(**PerfSuiteArgs)
1826 ActualLogfile.write(suitethread[cpu])
1827 ActualLogfile.write(
"Launching PerfSuite thread on cpu%s"%cpu)
1828 ActualLogfile.flush()
1831 suitethread[cpu].
start()
1833 while reduce(
lambda x,y: x
or y,
map(
lambda x: x.isAlive(),suitethread.values())):
1837 except (KeyboardInterrupt, SystemExit):
1839 ActualLogfile.write(
"All PerfSuite threads have completed!\n")
1840 ActualLogfile.flush()
1843 suite.runPerfSuite(**PerfSuiteArgs)