Example #1
0
        private void button1_Click(object sender, System.EventArgs e)
        {
            this.openFileDialog1.FileName    = "*.blg";
            this.openFileDialog1.Filter      = "PerfMon Binary Logs|*.blg";
            this.openFileDialog1.Multiselect = true;

            DialogResult res = this.openFileDialog1.ShowDialog(this);

            if (res == DialogResult.OK)
            {
                string fileName = this.openFileDialog1.FileName;

                this._performanceData = new Dictionary <string, List <PerformanceSample> >();

                var playback = new Playback();
                playback.AddPerfCounterTraces(fileName);
                playback.GetObservable <PerformanceSample>().Subscribe(StoreData);
                playback.Run();

                this.listBox1.Items.Clear();
                foreach (string id in this._performanceData.Keys.OrderBy(x => x).ToList())
                {
                    this.listBox1.Items.Add(id);
                }

                this.Text = this._start.ToShortDateString() + " - " + this._end.ToShortDateString() + ": " + fileName;
            }
        }
Example #2
0
        public void BlgPivotTwo()
        {
            // this query pivots the counters into separate collections for Processor and PhysicalDisk

            Playback playback = new Playback();
            playback.AddPerfCounterTraces(BlgFileName);

            var all = playback.GetObservable<PerformanceSample>();

            var processor = PivotToInstanceSnapshots(playback, "Processor");
            var disk = PivotToInstanceSnapshots(playback,"PhysicalDisk");

            playback.Run();

            Assert.AreEqual(3000, processor.Count()); // there are 5 instances: _Total, 0, 1, 2, 3
            Assert.AreEqual(600, disk.Count());
        }
Example #3
0
        public void BlgPivotTwo()
        {
            // this query pivots the counters into separate collections for Processor and PhysicalDisk

            Playback playback = new Playback();

            playback.AddPerfCounterTraces(BlgFileName);

            var all = playback.GetObservable <PerformanceSample>();

            var processor = PivotToInstanceSnapshots(playback, "Processor");
            var disk      = PivotToInstanceSnapshots(playback, "PhysicalDisk");

            playback.Run();

            Assert.AreEqual(3000, processor.Count()); // there are 5 instances: _Total, 0, 1, 2, 3
            Assert.AreEqual(600, disk.Count());
        }
Example #4
0
        static void CountAcrossHierarchies()
        {
            // The method GetAll works across event hierarchies - e.g. the PerfCounterSample events don't inherit from SystemEvent
            Console.WriteLine("----- CountAllThreeFiles -----");

            Playback playback = new Playback();

            playback.AddEtlFiles(@"HTTP_Server.etl");
            playback.AddPerfCounterTraces(@"BasicPerfCounters.blg");

            var types = new List <Type>(typeof(Parse).Assembly.GetTypes());

            types.Add(typeof(PerformanceSample));

            var all = playback.GetAll(types.ToArray());

            all.Count().Subscribe(Console.WriteLine);

            playback.Run();
        }
Example #5
0
        public void BlgPivotTwoToFiles()
        {
            // this query pivots the counters into separate collections for Processor and PhysicalDisk

            Playback playback = new Playback();

            playback.AddPerfCounterTraces(BlgFileName);

            var all = playback.GetObservable <PerformanceSample>();

            IDisposable processor = PivotToInstanceSnapshots(playback, "Processor", "Processor.csv");
            IDisposable disk      = PivotToInstanceSnapshots(playback, "PhysicalDisk", "PhysicalDisk.csv");

            playback.Run();

            processor.Dispose();
            disk.Dispose();

            Assert.IsTrue(File.Exists("Processor.csv"));
            Assert.IsTrue(File.Exists("PhysicalDisk.csv"));
        }
Example #6
0
        static void PerfCounterAverageAndDeviation()
        {
            var playback = new Playback();

            playback.AddPerfCounterTraces(@"BasicPerfCounters.blg");

            var procTimeTotal = from ps in playback.GetObservable <PerformanceSample>()
                                where ps.CounterSet == "Processor" && ps.CounterName == "% Processor Time" && ps.Instance == "_Total"
                                select ps;

            var powerSumBases = from ps in procTimeTotal
                                select new
            {
                s0_base = 1,
                s1_base = ps.Value,
                s2_base = ps.Value * ps.Value
            };

            var powerSums =
                from window in
                powerSumBases.Window(TimeSpan.FromMinutes(1), TimeSpan.FromMinutes(1), playback.Scheduler)
                from a in window.Aggregate(new { s0 = 0, s1 = 0.0, s2 = 0.1 }, (acc, point) => new
            {
                s0 = acc.s0 + point.s0_base,
                s1 = acc.s1 + point.s1_base,
                s2 = acc.s2 + point.s2_base
            })
                select a;

            var avgAndDeviation = from ps in powerSums
                                  select new
            {
                Average   = ps.s1 / ps.s0,
                Deviation = Math.Sqrt((ps.s0 * ps.s2 - ps.s1 * ps.s1) / (ps.s0 * ps.s0 - 1))
            };

            avgAndDeviation.Subscribe(value => Console.WriteLine("Average: {0}, Deviation: {1}", value.Average, value.Deviation));
            playback.Run();
        }
        public void BlgPivotTwoToFiles()
        {
            // this query pivots the counters into separate collections for Processor and PhysicalDisk

            Playback playback = new Playback();
            playback.AddPerfCounterTraces(BlgFileName);

            var all = playback.GetObservable<PerformanceSample>();

            IDisposable processor = PivotToInstanceSnapshots(playback, "Processor", "Processor.csv");
            IDisposable disk = PivotToInstanceSnapshots(playback, "PhysicalDisk", "PhysicalDisk.csv");

            playback.Run();

            processor.Dispose();
            disk.Dispose();

            Assert.IsTrue(File.Exists("Processor.csv"));
            Assert.IsTrue(File.Exists("PhysicalDisk.csv"));
        }
Example #8
0
        static void PerfCounterAverageAndDeviation()
        {
            var playback = new Playback();
            playback.AddPerfCounterTraces(@"BasicPerfCounters.blg");

            var procTimeTotal = from ps in playback.GetObservable<PerformanceSample>()
                                where ps.CounterSet == "Processor" && ps.CounterName == "% Processor Time" && ps.Instance == "_Total"
                                select ps;

            var powerSumBases = from ps in procTimeTotal
                                select new
                                {
                                    s0_base = 1,
                                    s1_base = ps.Value,
                                    s2_base = ps.Value * ps.Value
                                };

            var powerSums =
                from window in
                    powerSumBases.Window(TimeSpan.FromMinutes(1), TimeSpan.FromMinutes(1), playback.Scheduler)
                from a in window.Aggregate(new { s0 = 0, s1 = 0.0, s2 = 0.1 }, (acc, point) => new
                {
                    s0 = acc.s0 + point.s0_base,
                    s1 = acc.s1 + point.s1_base,
                    s2 = acc.s2 + point.s2_base
                })
                select a;

            var avgAndDeviation = from ps in powerSums
                                  select new
                                  {
                                      Average = ps.s1 / ps.s0,
                                      Deviation = Math.Sqrt((ps.s0 * ps.s2 - ps.s1 * ps.s1) / (ps.s0 * ps.s0 - 1))
                                  };

            avgAndDeviation.Subscribe(value => Console.WriteLine("Average: {0}, Deviation: {1}", value.Average, value.Deviation));
            playback.Run();
        }
Example #9
0
        static void CountAcrossHierarchies()
        {
            // The method GetAll works across event hierarchies - e.g. the PerfCounterSample events don't inherit from SystemEvent
            Console.WriteLine("----- CountAllThreeFiles -----");

            Playback playback = new Playback();
            playback.AddEtlFiles(@"HTTP_Server.etl");
            playback.AddPerfCounterTraces(@"BasicPerfCounters.blg");

            var types = new List<Type>(typeof(Parse).Assembly.GetTypes());
            types.Add(typeof(PerformanceSample));

            var all = playback.GetAll(types.ToArray());
            all.Count().Subscribe(Console.WriteLine);

            playback.Run();
        }