def report(): global freed_file print' HeapMonReport.report(): heapmon_file=', freed_file #findStaticHoles() tfile = TFile(freed_file, "READ") print " root compression factor = ", tfile.GetCompressionFactor() mem_canvas = TCanvas("HeapMon_report", "Memory Holes Statistics", 10, 10, 800, 1034); mem_canvas.SetFillColor(17); mem_canvas.cd() pad1 = TPad("pad1","pad1",0.01,0.57,0.50,0.93,33); pad2 = TPad("pad2","pad2",0.51,0.57,0.99,0.93,33); pad3 = TPad("pad3","pad3",0.01,0.01,0.99,0.50,33); pad3.SetPhi(210); pad3.SetTheta(25); pad1.Draw(); pad2.Draw(); pad3.Draw(); memTree = tfile.Get("holeTree") infoTree = tfile.Get("infoTree") mallocTree = tfile.Get("mallocTree") #holesm_th1i = TH1I('holesm_th1i', 'Holes size evolution', fcount, 0, fcount) #holesn_th1i = TH1I('holesn_th1i', 'Holes number evolution', fcount, 0, fcount) #total_th1i = TH1I('total_th1i', 'Total memory size evolution', fcount, 0, fcount) max_hole_size = memTree.GetMaximum("hole_size") print " max_hole_size=", max_hole_size, " min_hole_size", memTree.GetMinimum("hole_size") max_scan_number = memTree.GetMaximum("scan_number") print " max_scan_number=", max_scan_number memHist1 = TH2I("mem2d","Hole-sizes distribution evolution", 128, -0.5, max_hole_size - 0.5, 50, 0, max_scan_number) memTree.Project("mem2d", "scan_number:hole_size"); multiGraph1 = TMultiGraph(); multiGraph2 = TMultiGraph(); print " memHist.GetMaximum() = ", memHist1.GetMaximum(); # Working on a Report gStyle.SetOptStat(0); gStyle.SetPalette(1); gStyle.SetCanvasColor(33); gStyle.SetFrameFillColor(18); memHist1.SetFillColor(30); memHist1.SetFillStyle(0); memHist1.GetXaxis().SetTitle("Size of holes, kb"); memHist1.GetXaxis().SetLabelOffset(0.02); memHist1.GetXaxis().SetLabelSize(0.02); memHist1.GetXaxis().SetTitleSize(0.04); memHist1.GetXaxis().SetTitleColor(2); memHist1.GetYaxis().SetTitle("Event number"); memHist1.GetYaxis().SetLabelSize(0.04); memHist1.GetXaxis().SetLabelOffset(0.04); memHist1.GetYaxis().SetTitleSize(0.04); memHist1.GetYaxis().SetTitleColor(2); memHist1.GetZaxis().SetTitle("Number of holes"); memHist1.GetZaxis().SetLabelSize(0.02); memHist1.GetZaxis().SetTitleSize(0.04); memHist1.GetZaxis().SetTitleColor(2); title = TPaveLabel(0.1,0.95,0.9,0.99, "Job Memory Usage Plots"); title.SetFillColor(42); title.SetTextFont(42); title.Draw(); text_box = TPaveText(0.1,0.51,0.9,0.54); text_box.AddText("Malloc freed ('marked') Heap Memory Profile"); text_box.SetFillColor(42); text_box.SetTextAlign(12); text_box.SetTextFont(42); text_box.Draw(); x1=0.2; y1=0.91; x2=0.8; y2=0.98; #Drawing upper-left corner Pad1 of the report pad1.cd(); pad1.SetGridx();pad1.SetGridy(); infoTree.Draw("total_maps_memory:scan_number","", "goff") mapsGraph=TGraph(int(infoTree.GetSelectedRows()), infoTree.GetV2(), infoTree.GetV1()); mapsGraph.SetLineColor(1); mapsGraph.SetLineWidth(1); #mapsGraph.SetFillStyle(3001); mapsGraph.SetFillColor(2); mapsGraph.SetName("total_maps_memory"); #VmSize, VmLck, VmRSS, VmData, VmStk, VmExe, VmLib; infoTree.Draw("VmSize:scan_number", "","goff"); vmsizeGraph=TGraph(int(infoTree.GetSelectedRows()), infoTree.GetV2(), infoTree.GetV1()); vmsizeGraph.SetLineColor(2); vmsizeGraph.SetLineWidth(1); #vmsizeGraph.SetFillStyle(3002); vmsizeGraph.SetFillColor(3); vmsizeGraph.SetName("VmSize"); infoTree.Draw("VmRSS:scan_number", "", "goff"); vmrssGraph=TGraph(infoTree.GetSelectedRows(), infoTree.GetV2(), infoTree.GetV1()); vmrssGraph.SetLineColor(3); vmrssGraph.SetLineWidth(1); #vmrssGraph.SetFillStyle(3003); vmrssGraph.SetFillColor(4); vmrssGraph.SetName("VmRSS"); infoTree.Draw("VmData:scan_number", "", "goff"); vmdataGraph=TGraph(infoTree.GetSelectedRows(), infoTree.GetV2(), infoTree.GetV1()); vmdataGraph.SetLineColor(4); vmdataGraph.SetLineWidth(1); #vmdataGraph.SetFillStyle(3004); vmdataGraph.SetFillColor(4); vmdataGraph.SetName("VmData"); infoTree.Draw("VmStk:scan_number", "", "goff"); vmstkGraph=TGraph(infoTree.GetSelectedRows(), infoTree.GetV2(), infoTree.GetV1()); vmstkGraph.SetLineColor(5); vmstkGraph.SetLineWidth(1); #vmstkGraph.SetFillStyle(3005); vmstkGraph.SetFillColor(4); vmstkGraph.SetName("VmStk") infoTree.Draw("VmExe:scan_number", "", "goff"); vmexeGraph=TGraph(infoTree.GetSelectedRows(), infoTree.GetV2(), infoTree.GetV1()); vmexeGraph.SetLineColor(6); vmexeGraph.SetLineWidth(1); #vmexeGraph.SetFillStyle(3003); vmexeGraph.SetFillColor(4); vmexeGraph.SetName("VmExe"); infoTree.Draw("VmLib:scan_number", "", "goff"); vmlibGraph=TGraph(infoTree.GetSelectedRows(), infoTree.GetV2(), infoTree.GetV1()); vmlibGraph.SetLineColor(7); vmlibGraph.SetLineWidth(1); #vmlibGraph.SetFillStyle(3003); vmlibGraph.SetFillColor(4); vmlibGraph.SetName("VmLib"); infoTree.Draw("VmLck:scan_number", "", "goff"); vmlckGraph=TGraph(infoTree.GetSelectedRows(), infoTree.GetV2(), infoTree.GetV1()); vmlckGraph.SetLineColor(8); vmlckGraph.SetLineWidth(1); #vmlckGraph.SetFillStyle(3003); vmlckGraph.SetFillColor(4); vmlckGraph.SetName("VmLck"); infoTree.Draw("total_hole_memory:scan_number", "", "goff"); holeGraph=TGraph(infoTree.GetSelectedRows(), infoTree.GetV2(), infoTree.GetV1()) holeGraph.SetLineColor(9); holeGraph.SetLineWidth(1); #holeGraph.SetFillStyle(3004); holeGraph.SetFillColor(5); holeGraph.SetName("HolesSize"); mallocTree.Draw("malloc_free:scan_number", "", "goff"); freeGraph=TGraph(mallocTree.GetSelectedRows(), mallocTree.GetV2(), mallocTree.GetV1()) freeGraph.SetLineColor(11); freeGraph.SetLineWidth(1); freeGraph.SetFillStyle(3003); freeGraph.SetFillColor(4); freeGraph.SetName("malloc_free"); mallocTree.Draw("malloc_inuse:scan_number", "", "goff"); inuseGraph=TGraph(mallocTree.GetSelectedRows(), mallocTree.GetV2(), mallocTree.GetV1()) inuseGraph.SetLineColor(21); inuseGraph.SetLineWidth(1); inuseGraph.SetFillStyle(3003); inuseGraph.SetFillColor(4); inuseGraph.SetName("malloc_inuse"); mallocTree.Draw("malloc_sbrk:scan_number", "", "goff"); sbrkGraph=TGraph(mallocTree.GetSelectedRows(), mallocTree.GetV2(), mallocTree.GetV1()) sbrkGraph.SetLineColor(31); sbrkGraph.SetLineWidth(1); sbrkGraph.SetFillStyle(3003); sbrkGraph.SetFillColor(4); sbrkGraph.SetName("malloc_sbrk"); mallocTree.Draw("malloc_mmap:scan_number", "", "goff"); mmapGraph=TGraph(mallocTree.GetSelectedRows(), mallocTree.GetV2(), mallocTree.GetV1()) mmapGraph.SetLineColor(41); mmapGraph.SetLineWidth(1); mmapGraph.SetFillStyle(3003); mmapGraph.SetFillColor(4); mmapGraph.SetName("malloc_mmap"); pad1.cd(); multiGraph1.Add(mapsGraph);multiGraph1.Add(vmsizeGraph); multiGraph1.Add(vmrssGraph);multiGraph1.Add(vmdataGraph); multiGraph1.Add(vmlckGraph);multiGraph1.Add(vmexeGraph); multiGraph1.Add(vmstkGraph);#multiGraph1.Add(vmlibGraph); multiGraph1.Add(inuseGraph); multiGraph1.Add(sbrkGraph);multiGraph1.Add(mmapGraph); multiGraph1.Add(holeGraph);multiGraph1.Add(freeGraph); #multiGraph1.SetTitle("PROCESS VM and Malloc MEMORY USAGE"); title.DrawPaveLabel(x1,y1,x2,y2,"PROCESS VM and Malloc MEMORY USAGE","brNDC"); multiGraph1.Draw("ALg") hist = multiGraph1.GetHistogram(); hist.SetXTitle("Event Number"); hist.SetYTitle("Memory, kb"); legend1 = TLegend(0.84,0.20,0.99,0.90); legend1.AddEntry(mapsGraph, "Maps", "l"); legend1.AddEntry(vmsizeGraph,"VmSize", "l"); legend1.AddEntry(vmrssGraph, "VmRSS", "l"); legend1.AddEntry(vmdataGraph,"VmData", "l"); legend1.AddEntry(sbrkGraph, "MallocSbrk", "l"); legend1.AddEntry(inuseGraph, "MallocInuse", "l"); #legend1.AddEntry(vmlibGraph, "VmLib", "l"); legend1.AddEntry(mmapGraph, "MallocMmap", "l"); legend1.AddEntry(freeGraph, "MallocFree", "l"); legend1.AddEntry(holeGraph, "Freed-Holes", "l"); legend1.AddEntry(vmstkGraph, "VmStk", "l"); legend1.AddEntry(vmexeGraph, "VmExe", "l"); legend1.AddEntry(vmlckGraph, "VmLck", "l"); legend1.Draw(); #multiGraph1.Draw("ALg") #title.DrawPaveLabel(x1,y1,x2,y2,"Process Memory Usage Charts","brNDC"); #Drawing upper-left corner Pad1 of the report pad2.cd(); pad2.SetGridx(); pad2.SetGridy(); infoTree.Draw("total_hole_memory:scan_number", "", "goff"); holeGraph=TGraph(infoTree.GetSelectedRows(), infoTree.GetV2(), infoTree.GetV1()) holeGraph.SetLineColor(9); holeGraph.SetLineWidth(1); holeGraph.SetFillStyle(3004); holeGraph.SetFillColor(5); holeGraph.SetName("total_hole_memory"); mallocTree.Draw("malloc_free:scan_number", "", "goff"); freeGraph=TGraph(mallocTree.GetSelectedRows(), mallocTree.GetV2(), mallocTree.GetV1()) freeGraph.SetLineColor(11); freeGraph.SetLineWidth(1); freeGraph.SetFillStyle(3004); freeGraph.SetFillColor(5); freeGraph.SetName("malloc_free"); pad2.cd(); multiGraph2.Add(holeGraph); multiGraph2.Add(freeGraph); #multiGraph2.Add(sbrkGraph); #multiGraph2.Add(mmapGraph); #multiGraph2.SetTitle("Free and Marked Holes Memory Graph"); title.DrawPaveLabel(x1,y1,x2,y2,"Malloc Free and Marked Holes Memory","brNDC"); multiGraph2.Draw("ALg") hist = multiGraph2.GetHistogram(); hist.SetXTitle("Event Number"); hist.SetYTitle("Memory, kb"); legend2 = TLegend(0.9,0.30,0.99,0.90); legend2.AddEntry(freeGraph, "Free", "l"); legend2.AddEntry(holeGraph, "Holes", "l"); #legend2.AddEntry(inuseGraph, "Inuse", "l"); #legend2.AddEntry(mmapGraph, "Mmap", "l"); #legend2.AddEntry(sbrkGraph, "Sbrk", "l"); legend2.Draw() #multiGraph2.Draw("ALg") #title.DrawPaveLabel(x1,y1,x2,y2,"Malloc Memory Usage and Deallocation Charts","brNDC"); #PAD3 pad3.cd() pad3.SetLogz() memHist1.Draw("lego2"); #title.DrawPaveLabel(x1,y1,x2,y2,"TH2I-LEGO2","brNDC"); mem_canvas.SetBorderSize(1); #mem_canvas.Modified() mem_canvas.Update() mem_canvas.Print(".pdf") mem_canvas.Print(".C")