#!/usr/bin/python import sys from pcp import pmapi, pmcc CPU = "cpu" IDLE = "kernel.percpu.cpu.idle" METRICS = [ IDLE ] class Reporter(pmcc.MetricGroupPrinter): def curvals(self, group, name): return dict(map(lambda x: (x[1], x[2]), group[name].netValues)) def instlist(self, group, name): return sorted(dict(map(lambda x: (x[1], x[2]), group[name].netValues)).keys()) def report(self, manager): c_idle = self.curvals(manager[CPU], IDLE) for inst in self.instlist(manager[CPU], IDLE): print inst, c_idle[inst] print class Options(pmapi.pmOptions): def __init__(self): pmapi.pmOptions.__init__(self, "A:a:D:h:O:S:s:T:t:VZ:z?") self.pmSetLongOptionHeader("General options") self.pmSetLongOptionAlign() self.pmSetLongOptionArchive() self.pmSetLongOptionDebug() self.pmSetLongOptionHost() self.pmSetLongOptionOrigin() self.pmSetLongOptionStart() self.pmSetLongOptionSamples() self.pmSetLongOptionFinish() self.pmSetLongOptionInterval() self.pmSetLongOptionVersion() self.pmSetLongOptionTimeZone() self.pmSetLongOptionHostZone() self.pmSetLongOptionHelp() if __name__ == '__main__': try: manager = pmcc.MetricGroupManager.builder(Options(), sys.argv) manager.printer = Reporter() manager["cpu"] = METRICS manager.run() except pmapi.pmUsageErr, usage: print usage.message() except pmapi.pmErr, error: print "%s: %s" % (error.progname(), error.message()) except KeyboardInterrupt: pass