コード例 #1
0
 public OutputUnits(string host, string time, PCounter CPUstats, PCounter MEMstats, PCounter NETstats, PCounter DISKstats, bool leaking, bool cpuUsage)
 {
     hostname  = host;
     cpu       = CPUstats;
     mem       = MEMstats;
     net       = NETstats;
     disk      = DISKstats;
     timestamp = time;
     isLeaking = leaking;
     highCPU   = cpuUsage;
 }
コード例 #2
0
 public OutputUnits(string host, string time, PCounter CPUstats, PCounter MEMstats, PCounter NETstats, PCounter DISKstats, bool leaking, bool cpuUsage)
 {
     hostname = host;
       cpu = CPUstats;
       mem = MEMstats;
       net = NETstats;
       disk = DISKstats;
       timestamp = time;
       isLeaking = leaking;
       highCPU = cpuUsage;
 }
コード例 #3
0
ファイル: Program.cs プロジェクト: plausiblecontrol/NAnalyzer
        static OutputUnits makePerfMonGraphs(string file)
        {
            Excel.Application excelApp = null;
              Excel.Workbook workbook = null;
              Excel.Sheets sheets = null;
              Excel.Worksheet dataSheet = null;
              Excel.Worksheet newSheet = null;
              Excel.ChartObjects xlChart = null;
              Excel.Range dataY = null;
              Excel.Chart memChart = null;
              Excel.Chart diskChart = null;
              Excel.Chart cpuChart = null;
              Excel.Chart netChart = null;
              Excel.Axis xAxis = null;
              OutputUnits csData = null;
              bool leaking = false;
              bool highcpu = false;
              string exitFile = "";
              try {
            excelApp = new Excel.Application();
            string dir = file.Substring(0, file.LastIndexOf("\\") + 1);
            string fm = file.Substring(0, file.Length - 4).Substring(file.LastIndexOf("\\") + 1);
            workbook = excelApp.Workbooks.Open(file, 0, false, 6, Type.Missing, Type.Missing, Type.Missing, XlPlatform.xlWindows, ",",
              true, false, 0, false, false, false);

            sheets = workbook.Sheets;
            dataSheet = sheets[1];
            dataSheet.Name = "data";
            dataSheet.get_Range("A2:A2", Type.Missing).EntireRow.Delete(XlDeleteShiftDirection.xlShiftUp);//garbage row
            newSheet = (Worksheet)sheets.Add(Type.Missing, dataSheet, Type.Missing, Type.Missing);
            newSheet.Name = "results";
            xlChart = (Excel.ChartObjects)newSheet.ChartObjects(Type.Missing);

            memChart = xlChart.Add(20, 100, 450, 175).Chart;
            diskChart = xlChart.Add(20, 280, 450, 175).Chart;
            cpuChart = xlChart.Add(500, 100, 450, 175).Chart;
            netChart = xlChart.Add(500, 280, 450, 175).Chart;
            int rowTotal = dataSheet.UsedRange.Rows.Count;
            int colTotal = dataSheet.UsedRange.Columns.Count;
            dataSheet.get_Range("A2", "A" + rowTotal).NumberFormat ="m/d/yyyy h:mm";
            string ttime = dataSheet.Cells[2, 1].Value.ToString();
            Array availMem = (System.Array)dataSheet.get_Range("C2", "C" + rowTotal).Value;
            Array cpuTotal = (System.Array)dataSheet.get_Range("D2", "D" + rowTotal).Value;
            Array diskTotal = (System.Array)dataSheet.get_Range("B2", "B" + rowTotal).Value;

            dataSheet.Cells[1, colTotal + 1] = "Total LAN (Bytes Total/Sec)";
            double[] netties = new double[rowTotal-1];
            for (int i = 2; i <= rowTotal; i++) {
              if (colTotal > 5) {
            Array netLine = (System.Array)dataSheet.get_Range(xlStr(5)+ i, xlStr(colTotal)+ i).Value;
            double netLineTotal = 0;
            for(int j=1;j<=netLine.Length;j++){
              netLineTotal += Convert.ToDouble(netLine.GetValue(1,j));
            }
            netties[i - 2] = netLineTotal;
            dataSheet.Cells[i, colTotal + 1] = netLineTotal;
              }else{
            dataSheet.Cells[i, colTotal + 1] = "0";
              }
            }

            #region BuildCounters
            double[] mems = ColToDouble(availMem);
            double[] cpus = ColToDouble(cpuTotal);
            double[] disks = ColToDouble(diskTotal);
            //netties[]
            double avgCPUs = cpus.Average();
            PCounter CPU = new PCounter(avgCPUs, cpus.Max(), cpus.Min());
            PCounter MEM = new PCounter(mems.Average(), mems.Max(), mems.Min());
            PCounter DISK = new PCounter(disks.Average(), disks.Max(), disks.Min());
            PCounter NETS = new PCounter(netties.Average(), netties.Max(), netties.Min());
            if (avgCPUs > 40) {
              highcpu = true;
            }
            #endregion

            #region leakCheck
            double[] eqMB = new double[2];
            List<double> memList = new List<double>();
            int cX = availMem.Length;
            for (int i = 1; i < rowTotal - 1; i++) {
              memList.Add(Convert.ToDouble(availMem.GetValue(i, 1)));
            }
            eqMB = LeastSquares(memList);
            double stdD1 = StandardDev(memList);
            List<double> memList2 = sigma(memList, stdD1, eqMB);
            cX = memList2.Count();
            eqMB = LeastSquares(memList2);
            double stdD2 = StandardDev(memList2)*1.2;
            List<double> memList3 = sigma(memList2, stdD2, eqMB);
            eqMB = LeastSquares(memList3);

            if (eqMB[0] < 0) {
              leaking = true;
              newSheet.get_Range("E4", Type.Missing).Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Tomato);
            }
            #endregion

            #region formatting
            string lan = xlStr(colTotal + 1);
            newSheet.get_Range("A1", Type.Missing).EntireColumn.ColumnWidth = 12;
            newSheet.get_Range("A1", Type.Missing).EntireColumn.HorizontalAlignment = XlHAlign.xlHAlignRight;
            newSheet.get_Range("A2", Type.Missing).EntireRow.HorizontalAlignment = XlHAlign.xlHAlignCenter;
            newSheet.Cells[4, 5] = eqMB[0];
            newSheet.Cells[2, 2] = "Avg";
            newSheet.Cells[2, 3] = "Min";
            newSheet.Cells[2, 4] = "Max";
            newSheet.Cells[2, 5] = "Slope(3Sigma)";
            newSheet.Cells[3, 1] = "CPU";
            newSheet.Cells[3, 2] = "=AVERAGE(data!D:D)";
            newSheet.Cells[3, 3] = "=MIN(data!D:D)";
            newSheet.Cells[3, 4] = "=MAX(data!D:D)";
            newSheet.Cells[4, 1] = "Avail.RAM";
            newSheet.Cells[4, 2] = "=AVERAGE(data!C:C)";
            newSheet.Cells[4, 3] = "=MIN(data!C:C)";
            newSheet.Cells[4, 4] = "=MAX(data!C:C)";
            newSheet.Cells[5, 1] = "LAN Usage";
            newSheet.Cells[5, 2] = "=AVERAGE(data!"+lan+":"+lan+")";
            newSheet.Cells[5, 3] = "=MIN(data!"+lan+":"+lan+")";
            newSheet.Cells[5, 4] = "=MAX(data!" + lan + ":" + lan + ")";
            newSheet.Cells[6, 1] = "Disk Usage";
            newSheet.Cells[6, 2] = "=AVERAGE(data!B:B)";
            newSheet.Cells[6, 3] = "=MIN(data!B:B)";
            newSheet.Cells[6, 4] = "=MAX(data!B:B)";

            #endregion

            #region memChart
            dataY = dataSheet.Range["C1", "C" + rowTotal];
            memChart.SetSourceData(dataY, Type.Missing);
            memChart.ChartType = XlChartType.xlXYScatterLinesNoMarkers;
            memChart.HasLegend = false;
            xAxis = (Axis)memChart.Axes(XlAxisType.xlCategory, XlAxisGroup.xlPrimary);
            xAxis.MaximumScaleIsAuto = false;
            xAxis.MaximumScale = rowTotal + 1;
            xAxis.MinimumScaleIsAuto = false;
            xAxis.MinimumScale = 0;
            #endregion

            #region diskChart
            dataY = dataSheet.Range["B1", "B" + rowTotal];
            diskChart.SetSourceData(dataY, Type.Missing);
            diskChart.ChartType = XlChartType.xlXYScatterLinesNoMarkers;
            diskChart.HasLegend = false;
            xAxis = (Axis)diskChart.Axes(XlAxisType.xlCategory, XlAxisGroup.xlPrimary);
            xAxis.MaximumScaleIsAuto = false;
            xAxis.MaximumScale = rowTotal + 1;
            xAxis.MinimumScaleIsAuto = false;
            xAxis.MinimumScale = 0;
            #endregion

            #region cpuChart
            dataY = dataSheet.Range["D1", "D" + rowTotal];
            cpuChart.SetSourceData(dataY, Type.Missing);
            cpuChart.ChartType = XlChartType.xlXYScatterLinesNoMarkers;
            cpuChart.HasLegend = false;
            xAxis = (Axis)cpuChart.Axes(XlAxisType.xlCategory, XlAxisGroup.xlPrimary);
            xAxis.MaximumScaleIsAuto = false;
            xAxis.MaximumScale = rowTotal + 1;
            xAxis.MinimumScaleIsAuto = false;
            xAxis.MinimumScale = 0;
            #endregion

            #region netChart
            dataY = dataSheet.Range[xlStr(colTotal + 1)+"1", xlStr(colTotal + 1) + rowTotal];
            netChart.SetSourceData(dataY, Type.Missing);
            netChart.ChartType = XlChartType.xlXYScatterLinesNoMarkers;
            netChart.HasLegend = false;
            xAxis = (Axis)netChart.Axes(XlAxisType.xlCategory, XlAxisGroup.xlPrimary);
            xAxis.MaximumScaleIsAuto = false;
            xAxis.MaximumScale = rowTotal + 1;
            xAxis.MinimumScaleIsAuto = false;
            xAxis.MinimumScale = 0;
            #endregion

            string host = Path.GetFileNameWithoutExtension(dir + fm);
            csData = new OutputUnits(host, ttime+" time chunks: "+(rowTotal-1), CPU, MEM, NETS, DISK, leaking, highcpu);
            exitFile = dir + fm;
            excelApp.DisplayAlerts = false;
            workbook.SaveAs(@exitFile, XlFileFormat.xlOpenXMLWorkbook, Type.Missing, Type.Missing, false, false, XlSaveAsAccessMode.xlNoChange, XlSaveConflictResolution.xlLocalSessionChanges, Type.Missing, Type.Missing, Type.Missing);
            workbook.Close(true, Type.Missing, Type.Missing);
            excelApp.Quit();

            //releaseObject(sC);
            //releaseObject(myChart);
              } catch {
            Console.WriteLine("Had issues interacting with your Excel installation...maybe try a restart?");
            //using (StreamWriter outfile = File.AppendText("output.txt")) {
            //  outfile.WriteLine("Did have issues interacting with Excel on " + file);
            //}
              } finally {
            releaseObject(xAxis);
            releaseObject(dataY);
            releaseObject(diskChart);
            releaseObject(memChart);
            releaseObject(cpuChart);
            releaseObject(netChart);
            releaseObject(xlChart);
            releaseObject(newSheet);
            releaseObject(dataSheet);
            releaseObject(sheets);
            releaseObject(workbook);
            releaseObject(excelApp);
              }
              return csData;
        }
コード例 #4
0
        static OutputUnits makePerfMonGraphs(string file)
        {
            Excel.Application  excelApp  = null;
            Excel.Workbook     workbook  = null;
            Excel.Sheets       sheets    = null;
            Excel.Worksheet    dataSheet = null;
            Excel.Worksheet    newSheet  = null;
            Excel.ChartObjects xlChart   = null;
            Excel.Range        dataY     = null;
            Excel.Chart        memChart  = null;
            Excel.Chart        diskChart = null;
            Excel.Chart        cpuChart  = null;
            Excel.Chart        netChart  = null;
            Excel.Axis         xAxis     = null;
            OutputUnits        csData    = null;
            bool   leaking  = false;
            bool   highcpu  = false;
            string exitFile = "";

            try {
                excelApp = new Excel.Application();
                string dir = file.Substring(0, file.LastIndexOf("\\") + 1);
                string fm  = file.Substring(0, file.Length - 4).Substring(file.LastIndexOf("\\") + 1);
                workbook = excelApp.Workbooks.Open(file, 0, false, 6, Type.Missing, Type.Missing, Type.Missing, XlPlatform.xlWindows, ",",
                                                   true, false, 0, false, false, false);

                sheets         = workbook.Sheets;
                dataSheet      = sheets[1];
                dataSheet.Name = "data";
                dataSheet.get_Range("A2:A2", Type.Missing).EntireRow.Delete(XlDeleteShiftDirection.xlShiftUp);//garbage row
                newSheet      = (Worksheet)sheets.Add(Type.Missing, dataSheet, Type.Missing, Type.Missing);
                newSheet.Name = "results";
                xlChart       = (Excel.ChartObjects)newSheet.ChartObjects(Type.Missing);

                memChart  = xlChart.Add(20, 100, 450, 175).Chart;
                diskChart = xlChart.Add(20, 280, 450, 175).Chart;
                cpuChart  = xlChart.Add(500, 100, 450, 175).Chart;
                netChart  = xlChart.Add(500, 280, 450, 175).Chart;
                int rowTotal = dataSheet.UsedRange.Rows.Count;
                int colTotal = dataSheet.UsedRange.Columns.Count;
                dataSheet.get_Range("A2", "A" + rowTotal).NumberFormat = "m/d/yyyy h:mm";
                string ttime     = dataSheet.Cells[2, 1].Value.ToString();
                Array  availMem  = (System.Array)dataSheet.get_Range("C2", "C" + rowTotal).Value;
                Array  cpuTotal  = (System.Array)dataSheet.get_Range("D2", "D" + rowTotal).Value;
                Array  diskTotal = (System.Array)dataSheet.get_Range("B2", "B" + rowTotal).Value;

                dataSheet.Cells[1, colTotal + 1] = "Total LAN (Bytes Total/Sec)";
                double[] netties = new double[rowTotal - 1];
                for (int i = 2; i <= rowTotal; i++)
                {
                    if (colTotal > 5)
                    {
                        Array  netLine      = (System.Array)dataSheet.get_Range(xlStr(5) + i, xlStr(colTotal) + i).Value;
                        double netLineTotal = 0;
                        for (int j = 1; j <= netLine.Length; j++)
                        {
                            netLineTotal += Convert.ToDouble(netLine.GetValue(1, j));
                        }
                        netties[i - 2] = netLineTotal;
                        dataSheet.Cells[i, colTotal + 1] = netLineTotal;
                    }
                    else
                    {
                        dataSheet.Cells[i, colTotal + 1] = "0";
                    }
                }

                #region BuildCounters
                double[] mems  = ColToDouble(availMem);
                double[] cpus  = ColToDouble(cpuTotal);
                double[] disks = ColToDouble(diskTotal);
                //netties[]
                double   avgCPUs = cpus.Average();
                PCounter CPU     = new PCounter(avgCPUs, cpus.Max(), cpus.Min());
                PCounter MEM     = new PCounter(mems.Average(), mems.Max(), mems.Min());
                PCounter DISK    = new PCounter(disks.Average(), disks.Max(), disks.Min());
                PCounter NETS    = new PCounter(netties.Average(), netties.Max(), netties.Min());
                if (avgCPUs > 40)
                {
                    highcpu = true;
                }
                #endregion

                #region leakCheck
                double[]      eqMB    = new double[2];
                List <double> memList = new List <double>();
                int           cX      = availMem.Length;
                for (int i = 1; i < rowTotal - 1; i++)
                {
                    memList.Add(Convert.ToDouble(availMem.GetValue(i, 1)));
                }
                eqMB = LeastSquares(memList);
                double        stdD1    = StandardDev(memList);
                List <double> memList2 = sigma(memList, stdD1, eqMB);
                cX   = memList2.Count();
                eqMB = LeastSquares(memList2);
                double        stdD2    = StandardDev(memList2) * 1.2;
                List <double> memList3 = sigma(memList2, stdD2, eqMB);
                eqMB = LeastSquares(memList3);

                if (eqMB[0] < 0)
                {
                    leaking = true;
                    newSheet.get_Range("E4", Type.Missing).Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Tomato);
                }
                #endregion

                #region formatting
                string lan = xlStr(colTotal + 1);
                newSheet.get_Range("A1", Type.Missing).EntireColumn.ColumnWidth         = 12;
                newSheet.get_Range("A1", Type.Missing).EntireColumn.HorizontalAlignment = XlHAlign.xlHAlignRight;
                newSheet.get_Range("A2", Type.Missing).EntireRow.HorizontalAlignment    = XlHAlign.xlHAlignCenter;
                newSheet.Cells[4, 5] = eqMB[0];
                newSheet.Cells[2, 2] = "Avg";
                newSheet.Cells[2, 3] = "Min";
                newSheet.Cells[2, 4] = "Max";
                newSheet.Cells[2, 5] = "Slope(3Sigma)";
                newSheet.Cells[3, 1] = "CPU";
                newSheet.Cells[3, 2] = "=AVERAGE(data!D:D)";
                newSheet.Cells[3, 3] = "=MIN(data!D:D)";
                newSheet.Cells[3, 4] = "=MAX(data!D:D)";
                newSheet.Cells[4, 1] = "Avail.RAM";
                newSheet.Cells[4, 2] = "=AVERAGE(data!C:C)";
                newSheet.Cells[4, 3] = "=MIN(data!C:C)";
                newSheet.Cells[4, 4] = "=MAX(data!C:C)";
                newSheet.Cells[5, 1] = "LAN Usage";
                newSheet.Cells[5, 2] = "=AVERAGE(data!" + lan + ":" + lan + ")";
                newSheet.Cells[5, 3] = "=MIN(data!" + lan + ":" + lan + ")";
                newSheet.Cells[5, 4] = "=MAX(data!" + lan + ":" + lan + ")";
                newSheet.Cells[6, 1] = "Disk Usage";
                newSheet.Cells[6, 2] = "=AVERAGE(data!B:B)";
                newSheet.Cells[6, 3] = "=MIN(data!B:B)";
                newSheet.Cells[6, 4] = "=MAX(data!B:B)";

                #endregion

                #region memChart
                dataY = dataSheet.Range["C1", "C" + rowTotal];
                memChart.SetSourceData(dataY, Type.Missing);
                memChart.ChartType = XlChartType.xlXYScatterLinesNoMarkers;
                memChart.HasLegend = false;
                xAxis = (Axis)memChart.Axes(XlAxisType.xlCategory, XlAxisGroup.xlPrimary);
                xAxis.MaximumScaleIsAuto = false;
                xAxis.MaximumScale       = rowTotal + 1;
                xAxis.MinimumScaleIsAuto = false;
                xAxis.MinimumScale       = 0;
                #endregion

                #region diskChart
                dataY = dataSheet.Range["B1", "B" + rowTotal];
                diskChart.SetSourceData(dataY, Type.Missing);
                diskChart.ChartType = XlChartType.xlXYScatterLinesNoMarkers;
                diskChart.HasLegend = false;
                xAxis = (Axis)diskChart.Axes(XlAxisType.xlCategory, XlAxisGroup.xlPrimary);
                xAxis.MaximumScaleIsAuto = false;
                xAxis.MaximumScale       = rowTotal + 1;
                xAxis.MinimumScaleIsAuto = false;
                xAxis.MinimumScale       = 0;
                #endregion

                #region cpuChart
                dataY = dataSheet.Range["D1", "D" + rowTotal];
                cpuChart.SetSourceData(dataY, Type.Missing);
                cpuChart.ChartType = XlChartType.xlXYScatterLinesNoMarkers;
                cpuChart.HasLegend = false;
                xAxis = (Axis)cpuChart.Axes(XlAxisType.xlCategory, XlAxisGroup.xlPrimary);
                xAxis.MaximumScaleIsAuto = false;
                xAxis.MaximumScale       = rowTotal + 1;
                xAxis.MinimumScaleIsAuto = false;
                xAxis.MinimumScale       = 0;
                #endregion

                #region netChart
                dataY = dataSheet.Range[xlStr(colTotal + 1) + "1", xlStr(colTotal + 1) + rowTotal];
                netChart.SetSourceData(dataY, Type.Missing);
                netChart.ChartType = XlChartType.xlXYScatterLinesNoMarkers;
                netChart.HasLegend = false;
                xAxis = (Axis)netChart.Axes(XlAxisType.xlCategory, XlAxisGroup.xlPrimary);
                xAxis.MaximumScaleIsAuto = false;
                xAxis.MaximumScale       = rowTotal + 1;
                xAxis.MinimumScaleIsAuto = false;
                xAxis.MinimumScale       = 0;
                #endregion

                string host = Path.GetFileNameWithoutExtension(dir + fm);
                csData   = new OutputUnits(host, ttime + " time chunks: " + (rowTotal - 1), CPU, MEM, NETS, DISK, leaking, highcpu);
                exitFile = dir + fm;
                excelApp.DisplayAlerts = false;
                workbook.SaveAs(@exitFile, XlFileFormat.xlOpenXMLWorkbook, Type.Missing, Type.Missing, false, false, XlSaveAsAccessMode.xlNoChange, XlSaveConflictResolution.xlLocalSessionChanges, Type.Missing, Type.Missing, Type.Missing);
                workbook.Close(true, Type.Missing, Type.Missing);
                excelApp.Quit();

                //releaseObject(sC);
                //releaseObject(myChart);
            } catch {
                Console.WriteLine("Had issues interacting with your Excel installation...maybe try a restart?");
                //using (StreamWriter outfile = File.AppendText("output.txt")) {
                //  outfile.WriteLine("Did have issues interacting with Excel on " + file);
                //}
            } finally {
                releaseObject(xAxis);
                releaseObject(dataY);
                releaseObject(diskChart);
                releaseObject(memChart);
                releaseObject(cpuChart);
                releaseObject(netChart);
                releaseObject(xlChart);
                releaseObject(newSheet);
                releaseObject(dataSheet);
                releaseObject(sheets);
                releaseObject(workbook);
                releaseObject(excelApp);
            }
            return(csData);
        }