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; } }
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()); }
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()); }
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(); }
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")); }
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")); }
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(); }
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(); }