diff --git a/trunk/CHANGELOG.txt b/trunk/CHANGELOG.txt
index ba03d4d80..b4108b317 100644
--- a/trunk/CHANGELOG.txt
+++ b/trunk/CHANGELOG.txt
@@ -1,26 +1,23 @@
Process Hacker
1.3.0.0
- * NEW: Process tree
- * NEW: Process properties window
- * NEW: Process performance information and graphs
- * NEW: Displays more information about tokens
- * NEW: Displays information about Events, Mutants, Sections and Tokens
- other processes have handles to
- * NEW: Terminator tool - tries to terminate processes using many different
- techniques
- * NEW: Highlighting for UAC elevated processes and processes in job objects
- * NEW: Struct reader (with support for user-defined structs)
- * NEW: Tray icon now displays the current CPU usage, and the tooltip is almost
- exactly the same as Process Explorer's (current CPU usage + process using most
- of the CPU)
- * FIXED: Shows SIDs without names in SDDL format
- * FIXED: Less "Access denied" errors - uses PROCESS_QUERY_LIMITED_INFORMATION
- on Vista
- * FIXED: Major refactoring of Win32 code
- * FIXED: Symbols are now bound to each process - no more weird stack traces/symbol
- names
- * FIXED: Handle filtering is now much faster - uses a cache for session ID checking
+ * NEW:
+ * Process tree using TreeViewAdv
+ * Process properties window with statistics and graphs
+ * System Information Window with statistics and graphs
+ * Detailed token information, including source, owner and primary group
+ * Information about remote handles to events, mutants, sections and tokens
+ * Terminator tool - tries many techniques to terminate processes
+ * Highlighting for UAC elevated processes and processes in job objects
+ * Struct reader for examining PEBs and TEBs - note that this can be
+ extended by writing your own definitions
+ * Better tray icon - displays a graph, and the tooltip contains the current
+ CPU usage and the process using most of the CPU
+ * FIXED:
+ * Shows SIDs without names (like Logon IDs) in SDDL format
+ * Uses PROCESS_QUERY_LIMITED_INFORMATION on Windows Vista - e.g. on audiodg.exe
+ * Symbols are now bound to each process - no more weird stack traces/symbols
+ * Handle filtering is now much faster - uses a cache for session ID checking
1.2.6.5
* A new member of the project - Dean
diff --git a/trunk/ProcessHacker/Components/Plotter.cs b/trunk/ProcessHacker/Components/Plotter.cs
index 676fc92df..b0db276da 100644
--- a/trunk/ProcessHacker/Components/Plotter.cs
+++ b/trunk/ProcessHacker/Components/Plotter.cs
@@ -163,6 +163,11 @@ namespace ProcessHacker.Components
/// A floating-point number less than or equal to 1.
public void Add(float f1, float f2)
{
+ if (f1 > 1.0f)
+ f1 = 1.0f;
+ if (f2 > 1.0f)
+ f2 = 1.0f;
+
_listData1.Add(f1);
_listData2.Add(f2);
diff --git a/trunk/ProcessHacker/Forms/HackerWindow.cs b/trunk/ProcessHacker/Forms/HackerWindow.cs
index fa6660b15..48f4d40a5 100644
--- a/trunk/ProcessHacker/Forms/HackerWindow.cs
+++ b/trunk/ProcessHacker/Forms/HackerWindow.cs
@@ -272,8 +272,10 @@ namespace ProcessHacker
{
SysInfoWindow = new SysInfoWindow();
}
+
SysInfoWindow.Show();
SysInfoWindow.Activate();
+ SysInfoWindow.Start();
}
#endregion
diff --git a/trunk/ProcessHacker/Forms/OptionsWindow.Designer.cs b/trunk/ProcessHacker/Forms/OptionsWindow.Designer.cs
index 5bb3e7ff9..934146ce9 100644
--- a/trunk/ProcessHacker/Forms/OptionsWindow.Designer.cs
+++ b/trunk/ProcessHacker/Forms/OptionsWindow.Designer.cs
@@ -40,6 +40,8 @@
this.checkHideWhenMinimized = new System.Windows.Forms.CheckBox();
this.checkShowTrayIcon = new System.Windows.Forms.CheckBox();
this.tabHighlighting = new System.Windows.Forms.TabPage();
+ this.label11 = new System.Windows.Forms.Label();
+ this.colorJobProcesses = new ProcessHacker.Components.ColorModifier();
this.label10 = new System.Windows.Forms.Label();
this.colorElevatedProcesses = new ProcessHacker.Components.ColorModifier();
this.label9 = new System.Windows.Forms.Label();
@@ -70,8 +72,8 @@
this.label16 = new System.Windows.Forms.Label();
this.colorCPUKT = new ProcessHacker.Components.ColorModifier();
this.label17 = new System.Windows.Forms.Label();
- this.colorJobProcesses = new ProcessHacker.Components.ColorModifier();
- this.label11 = new System.Windows.Forms.Label();
+ this.label18 = new System.Windows.Forms.Label();
+ this.comboSizeUnits = new System.Windows.Forms.ComboBox();
((System.ComponentModel.ISupportInitialize)(this.textUpdateInterval)).BeginInit();
this.tabControl.SuspendLayout();
this.tabGeneral.SuspendLayout();
@@ -133,7 +135,7 @@
//
this.checkShowProcessDomains.AutoSize = true;
this.checkShowProcessDomains.FlatStyle = System.Windows.Forms.FlatStyle.System;
- this.checkShowProcessDomains.Location = new System.Drawing.Point(6, 132);
+ this.checkShowProcessDomains.Location = new System.Drawing.Point(6, 159);
this.checkShowProcessDomains.Name = "checkShowProcessDomains";
this.checkShowProcessDomains.Size = new System.Drawing.Size(156, 18);
this.checkShowProcessDomains.TabIndex = 3;
@@ -144,7 +146,7 @@
//
this.checkWarnDangerous.AutoSize = true;
this.checkWarnDangerous.FlatStyle = System.Windows.Forms.FlatStyle.System;
- this.checkWarnDangerous.Location = new System.Drawing.Point(6, 108);
+ this.checkWarnDangerous.Location = new System.Drawing.Point(6, 135);
this.checkWarnDangerous.Name = "checkWarnDangerous";
this.checkWarnDangerous.Size = new System.Drawing.Size(228, 18);
this.checkWarnDangerous.TabIndex = 4;
@@ -164,9 +166,9 @@
//
this.textSearchEngine.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
- this.textSearchEngine.Location = new System.Drawing.Point(92, 33);
+ this.textSearchEngine.Location = new System.Drawing.Point(95, 33);
this.textSearchEngine.Name = "textSearchEngine";
- this.textSearchEngine.Size = new System.Drawing.Size(241, 20);
+ this.textSearchEngine.Size = new System.Drawing.Size(238, 20);
this.textSearchEngine.TabIndex = 6;
//
// tabControl
@@ -185,6 +187,8 @@
//
// tabGeneral
//
+ this.tabGeneral.Controls.Add(this.comboSizeUnits);
+ this.tabGeneral.Controls.Add(this.label18);
this.tabGeneral.Controls.Add(this.checkHideWhenMinimized);
this.tabGeneral.Controls.Add(this.checkShowTrayIcon);
this.tabGeneral.Controls.Add(this.label1);
@@ -196,7 +200,7 @@
this.tabGeneral.Location = new System.Drawing.Point(4, 22);
this.tabGeneral.Name = "tabGeneral";
this.tabGeneral.Padding = new System.Windows.Forms.Padding(3);
- this.tabGeneral.Size = new System.Drawing.Size(339, 226);
+ this.tabGeneral.Size = new System.Drawing.Size(339, 244);
this.tabGeneral.TabIndex = 0;
this.tabGeneral.Text = "General";
this.tabGeneral.UseVisualStyleBackColor = true;
@@ -205,7 +209,7 @@
//
this.checkHideWhenMinimized.AutoSize = true;
this.checkHideWhenMinimized.FlatStyle = System.Windows.Forms.FlatStyle.System;
- this.checkHideWhenMinimized.Location = new System.Drawing.Point(6, 83);
+ this.checkHideWhenMinimized.Location = new System.Drawing.Point(6, 110);
this.checkHideWhenMinimized.Name = "checkHideWhenMinimized";
this.checkHideWhenMinimized.Size = new System.Drawing.Size(131, 18);
this.checkHideWhenMinimized.TabIndex = 9;
@@ -216,7 +220,7 @@
//
this.checkShowTrayIcon.AutoSize = true;
this.checkShowTrayIcon.FlatStyle = System.Windows.Forms.FlatStyle.System;
- this.checkShowTrayIcon.Location = new System.Drawing.Point(6, 59);
+ this.checkShowTrayIcon.Location = new System.Drawing.Point(6, 86);
this.checkShowTrayIcon.Name = "checkShowTrayIcon";
this.checkShowTrayIcon.Size = new System.Drawing.Size(102, 18);
this.checkShowTrayIcon.TabIndex = 7;
@@ -252,6 +256,23 @@
this.tabHighlighting.Text = "Highlighting";
this.tabHighlighting.UseVisualStyleBackColor = true;
//
+ // label11
+ //
+ this.label11.AutoSize = true;
+ this.label11.Location = new System.Drawing.Point(6, 217);
+ this.label11.Name = "label11";
+ this.label11.Size = new System.Drawing.Size(79, 13);
+ this.label11.TabIndex = 9;
+ this.label11.Text = "Job Processes:";
+ //
+ // colorJobProcesses
+ //
+ this.colorJobProcesses.Color = System.Drawing.Color.Transparent;
+ this.colorJobProcesses.Location = new System.Drawing.Point(127, 215);
+ this.colorJobProcesses.Name = "colorJobProcesses";
+ this.colorJobProcesses.Size = new System.Drawing.Size(40, 20);
+ this.colorJobProcesses.TabIndex = 8;
+ //
// label10
//
this.label10.AutoSize = true;
@@ -415,7 +436,7 @@
this.tabPlotting.Location = new System.Drawing.Point(4, 22);
this.tabPlotting.Name = "tabPlotting";
this.tabPlotting.Padding = new System.Windows.Forms.Padding(3);
- this.tabPlotting.Size = new System.Drawing.Size(339, 226);
+ this.tabPlotting.Size = new System.Drawing.Size(339, 244);
this.tabPlotting.TabIndex = 2;
this.tabPlotting.Text = "Plotting";
this.tabPlotting.UseVisualStyleBackColor = true;
@@ -533,22 +554,31 @@
this.label17.TabIndex = 10;
this.label17.Text = "CPU Kernel Time:";
//
- // colorJobProcesses
+ // label18
//
- this.colorJobProcesses.Color = System.Drawing.Color.Transparent;
- this.colorJobProcesses.Location = new System.Drawing.Point(127, 215);
- this.colorJobProcesses.Name = "colorJobProcesses";
- this.colorJobProcesses.Size = new System.Drawing.Size(40, 20);
- this.colorJobProcesses.TabIndex = 8;
+ this.label18.AutoSize = true;
+ this.label18.Location = new System.Drawing.Point(6, 62);
+ this.label18.Name = "label18";
+ this.label18.Size = new System.Drawing.Size(75, 13);
+ this.label18.TabIndex = 10;
+ this.label18.Text = "Max Size Unit:";
//
- // label11
+ // comboSizeUnits
//
- this.label11.AutoSize = true;
- this.label11.Location = new System.Drawing.Point(6, 217);
- this.label11.Name = "label11";
- this.label11.Size = new System.Drawing.Size(79, 13);
- this.label11.TabIndex = 9;
- this.label11.Text = "Job Processes:";
+ this.comboSizeUnits.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.comboSizeUnits.FormattingEnabled = true;
+ this.comboSizeUnits.Items.AddRange(new object[] {
+ "B",
+ "kB",
+ "MB",
+ "GB",
+ "TB",
+ "PB",
+ "EB"});
+ this.comboSizeUnits.Location = new System.Drawing.Point(95, 59);
+ this.comboSizeUnits.Name = "comboSizeUnits";
+ this.comboSizeUnits.Size = new System.Drawing.Size(67, 21);
+ this.comboSizeUnits.TabIndex = 11;
//
// OptionsWindow
//
@@ -625,5 +655,7 @@
private System.Windows.Forms.CheckBox checkPlotterAntialias;
private System.Windows.Forms.Label label11;
private ProcessHacker.Components.ColorModifier colorJobProcesses;
+ private System.Windows.Forms.ComboBox comboSizeUnits;
+ private System.Windows.Forms.Label label18;
}
}
\ No newline at end of file
diff --git a/trunk/ProcessHacker/Forms/OptionsWindow.cs b/trunk/ProcessHacker/Forms/OptionsWindow.cs
index 73fbbe6eb..82e1c12e2 100644
--- a/trunk/ProcessHacker/Forms/OptionsWindow.cs
+++ b/trunk/ProcessHacker/Forms/OptionsWindow.cs
@@ -37,6 +37,8 @@ namespace ProcessHacker
textUpdateInterval.Value = Properties.Settings.Default.RefreshInterval;
textSearchEngine.Text = Properties.Settings.Default.SearchEngine;
+ comboSizeUnits.SelectedItem =
+ Misc.SizeUnitNames[Properties.Settings.Default.UnitSpecifier];
checkWarnDangerous.Checked = Properties.Settings.Default.WarnDangerous;
checkShowProcessDomains.Checked = Properties.Settings.Default.ShowAccountDomains;
checkShowTrayIcon.Checked = Properties.Settings.Default.ShowIcon;
@@ -83,6 +85,8 @@ namespace ProcessHacker
Properties.Settings.Default.ShowAccountDomains = checkShowProcessDomains.Checked;
Properties.Settings.Default.ShowIcon = checkShowTrayIcon.Checked;
Properties.Settings.Default.HideWhenMinimized = checkHideWhenMinimized.Checked;
+ Properties.Settings.Default.UnitSpecifier =
+ Array.IndexOf(Misc.SizeUnitNames, comboSizeUnits.SelectedItem);
Program.HackerWindow.NotifyIcon.Visible = Properties.Settings.Default.ShowIcon;
Program.HackerWindow.ProcessProvider.Interval = Properties.Settings.Default.RefreshInterval;
diff --git a/trunk/ProcessHacker/Forms/ProcessWindow.cs b/trunk/ProcessHacker/Forms/ProcessWindow.cs
index b38fb17b7..582169554 100644
--- a/trunk/ProcessHacker/Forms/ProcessWindow.cs
+++ b/trunk/ProcessHacker/Forms/ProcessWindow.cs
@@ -66,8 +66,10 @@ namespace ProcessHacker
{
ProcessItem item = Program.HackerWindow.ProcessProvider.Dictionary[_pid];
- _processStats.Add("System Idle",
- Program.HackerWindow.ProcessProvider.ProcessorPerf.IdleTime);
+ _processStats.Add("System Other",
+ Program.HackerWindow.ProcessProvider.ProcessorPerf.IdleTime +
+ Program.HackerWindow.ProcessProvider.ProcessorPerf.DpcTime +
+ Program.HackerWindow.ProcessProvider.ProcessorPerf.InterruptTime);
_processStats.Add("System Kernel",
Program.HackerWindow.ProcessProvider.ProcessorPerf.KernelTime);
_processStats.Add("System User",
@@ -440,8 +442,10 @@ namespace ProcessHacker
ProcessItem item = Program.HackerWindow.ProcessProvider.Dictionary[_pid];
// update deltas
- _processStats.Update("System Idle",
- Program.HackerWindow.ProcessProvider.ProcessorPerf.IdleTime);
+ _processStats.Update("System Other",
+ Program.HackerWindow.ProcessProvider.ProcessorPerf.IdleTime +
+ Program.HackerWindow.ProcessProvider.ProcessorPerf.DpcTime +
+ Program.HackerWindow.ProcessProvider.ProcessorPerf.InterruptTime);
_processStats.Update("System Kernel",
Program.HackerWindow.ProcessProvider.ProcessorPerf.KernelTime);
_processStats.Update("System User",
@@ -467,18 +471,15 @@ namespace ProcessHacker
plotterIO.LineColor2 = Properties.Settings.Default.PlotterIOWColor;
// update graphs
- long sysTotal = _processStats.GetDelta("System Kernel") + _processStats.GetDelta("System User");
+ long sysTotal = _processStats.GetDelta("System Kernel") + _processStats.GetDelta("System User")
+ + _processStats.GetDelta("System Other");
float procKernel = (float)_processStats.GetDelta("Process Kernel") / sysTotal;
float procUser = (float)_processStats.GetDelta("Process User") / sysTotal;
- int noProcs = Program.HackerWindow.ProcessProvider.System.NumberOfProcessors;
- if (procKernel / noProcs <= 1 && procUser / noProcs <= 1)
- {
- plotterCPUUsage.Add(procKernel / noProcs, procUser / noProcs);
- plotterCPUUsage.Text = ((procKernel + procUser) * 100 / noProcs).ToString("F2") +
- "% (K: " + (procKernel * 100 / noProcs).ToString("F2") +
- "%, U: " + (procUser * 100 / noProcs).ToString("F2") + "%)";
- }
+ plotterCPUUsage.Add(procKernel, procUser);
+ plotterCPUUsage.Text = ((procKernel + procUser) * 100).ToString("F2") +
+ "% (K: " + (procKernel * 100).ToString("F2") +
+ "%, U: " + (procUser * 100).ToString("F2") + "%)";
plotterMemory.Add(item.Process.VirtualMemoryCounters.PrivateBytes,
item.Process.VirtualMemoryCounters.WorkingSetSize);
diff --git a/trunk/ProcessHacker/Forms/SysInfoWindow.Designer.cs b/trunk/ProcessHacker/Forms/SysInfoWindow.Designer.cs
index 2fbaf6726..1c29a5cf8 100644
--- a/trunk/ProcessHacker/Forms/SysInfoWindow.Designer.cs
+++ b/trunk/ProcessHacker/Forms/SysInfoWindow.Designer.cs
@@ -35,13 +35,115 @@
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.groupBox2 = new System.Windows.Forms.GroupBox();
this.checkShowOneGraphPerCPU = new System.Windows.Forms.CheckBox();
+ this.flowInfo = new System.Windows.Forms.FlowLayoutPanel();
+ this.groupBox3 = new System.Windows.Forms.GroupBox();
+ this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
+ this.label6 = new System.Windows.Forms.Label();
+ this.label8 = new System.Windows.Forms.Label();
+ this.label9 = new System.Windows.Forms.Label();
+ this.labelTotalsProcesses = new System.Windows.Forms.Label();
+ this.labelTotalsThreads = new System.Windows.Forms.Label();
+ this.labelTotalsHandles = new System.Windows.Forms.Label();
+ this.groupBox4 = new System.Windows.Forms.GroupBox();
+ this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
+ this.label1 = new System.Windows.Forms.Label();
+ this.label2 = new System.Windows.Forms.Label();
+ this.label3 = new System.Windows.Forms.Label();
+ this.labelCCC = new System.Windows.Forms.Label();
+ this.labelCCP = new System.Windows.Forms.Label();
+ this.labelCCL = new System.Windows.Forms.Label();
+ this.groupBox5 = new System.Windows.Forms.GroupBox();
+ this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel();
+ this.label4 = new System.Windows.Forms.Label();
+ this.label7 = new System.Windows.Forms.Label();
+ this.labelPMC = new System.Windows.Forms.Label();
+ this.labelPMT = new System.Windows.Forms.Label();
+ this.groupBox6 = new System.Windows.Forms.GroupBox();
+ this.tableLayoutPanel4 = new System.Windows.Forms.TableLayoutPanel();
+ this.label15 = new System.Windows.Forms.Label();
+ this.labelCacheMaximum = new System.Windows.Forms.Label();
+ this.label13 = new System.Windows.Forms.Label();
+ this.labelCacheMinimum = new System.Windows.Forms.Label();
+ this.label5 = new System.Windows.Forms.Label();
+ this.label10 = new System.Windows.Forms.Label();
+ this.labelCacheCurrent = new System.Windows.Forms.Label();
+ this.labelCachePeak = new System.Windows.Forms.Label();
+ this.groupBox7 = new System.Windows.Forms.GroupBox();
+ this.tableLayoutPanel5 = new System.Windows.Forms.TableLayoutPanel();
+ this.label23 = new System.Windows.Forms.Label();
+ this.labelKPNPF = new System.Windows.Forms.Label();
+ this.label21 = new System.Windows.Forms.Label();
+ this.labelKPNPA = new System.Windows.Forms.Label();
+ this.label11 = new System.Windows.Forms.Label();
+ this.label14 = new System.Windows.Forms.Label();
+ this.labelKPNPU = new System.Windows.Forms.Label();
+ this.label17 = new System.Windows.Forms.Label();
+ this.label18 = new System.Windows.Forms.Label();
+ this.labelKPPPU = new System.Windows.Forms.Label();
+ this.labelKPPA = new System.Windows.Forms.Label();
+ this.label12 = new System.Windows.Forms.Label();
+ this.labelKPPVU = new System.Windows.Forms.Label();
+ this.labelKPPF = new System.Windows.Forms.Label();
+ this.groupBox8 = new System.Windows.Forms.GroupBox();
+ this.tableLayoutPanel6 = new System.Windows.Forms.TableLayoutPanel();
+ this.label20 = new System.Windows.Forms.Label();
+ this.labelPFCache = new System.Windows.Forms.Label();
+ this.label24 = new System.Windows.Forms.Label();
+ this.label25 = new System.Windows.Forms.Label();
+ this.labelPFDZ = new System.Windows.Forms.Label();
+ this.label27 = new System.Windows.Forms.Label();
+ this.label28 = new System.Windows.Forms.Label();
+ this.labelPFTotal = new System.Windows.Forms.Label();
+ this.labelPFTrans = new System.Windows.Forms.Label();
+ this.label31 = new System.Windows.Forms.Label();
+ this.labelPFCOW = new System.Windows.Forms.Label();
+ this.labelPFCacheTrans = new System.Windows.Forms.Label();
+ this.groupBox9 = new System.Windows.Forms.GroupBox();
+ this.tableLayoutPanel7 = new System.Windows.Forms.TableLayoutPanel();
+ this.label16 = new System.Windows.Forms.Label();
+ this.labelIOOB = new System.Windows.Forms.Label();
+ this.label22 = new System.Windows.Forms.Label();
+ this.label26 = new System.Windows.Forms.Label();
+ this.labelIOO = new System.Windows.Forms.Label();
+ this.label30 = new System.Windows.Forms.Label();
+ this.label32 = new System.Windows.Forms.Label();
+ this.labelIOR = new System.Windows.Forms.Label();
+ this.labelIOW = new System.Windows.Forms.Label();
+ this.label35 = new System.Windows.Forms.Label();
+ this.labelIORB = new System.Windows.Forms.Label();
+ this.labelIOWB = new System.Windows.Forms.Label();
this.plotterMemory = new ProcessHacker.Components.Plotter();
this.plotterIO = new ProcessHacker.Components.Plotter();
this.plotterCPU = new ProcessHacker.Components.Plotter();
+ this.groupBox10 = new System.Windows.Forms.GroupBox();
+ this.tableLayoutPanel8 = new System.Windows.Forms.TableLayoutPanel();
+ this.label37 = new System.Windows.Forms.Label();
+ this.label38 = new System.Windows.Forms.Label();
+ this.labelCPUContextSwitches = new System.Windows.Forms.Label();
+ this.labelCPUSystemCalls = new System.Windows.Forms.Label();
+ this.label41 = new System.Windows.Forms.Label();
+ this.labelCPUInterrupts = new System.Windows.Forms.Label();
this.gboxCPUPlotter.SuspendLayout();
this.tableGraphs.SuspendLayout();
this.groupBox1.SuspendLayout();
this.groupBox2.SuspendLayout();
+ this.flowInfo.SuspendLayout();
+ this.groupBox3.SuspendLayout();
+ this.tableLayoutPanel1.SuspendLayout();
+ this.groupBox4.SuspendLayout();
+ this.tableLayoutPanel2.SuspendLayout();
+ this.groupBox5.SuspendLayout();
+ this.tableLayoutPanel3.SuspendLayout();
+ this.groupBox6.SuspendLayout();
+ this.tableLayoutPanel4.SuspendLayout();
+ this.groupBox7.SuspendLayout();
+ this.tableLayoutPanel5.SuspendLayout();
+ this.groupBox8.SuspendLayout();
+ this.tableLayoutPanel6.SuspendLayout();
+ this.groupBox9.SuspendLayout();
+ this.tableLayoutPanel7.SuspendLayout();
+ this.groupBox10.SuspendLayout();
+ this.tableLayoutPanel8.SuspendLayout();
this.SuspendLayout();
//
// gboxCPUPlotter
@@ -51,7 +153,7 @@
this.gboxCPUPlotter.Dock = System.Windows.Forms.DockStyle.Fill;
this.gboxCPUPlotter.Location = new System.Drawing.Point(3, 3);
this.gboxCPUPlotter.Name = "gboxCPUPlotter";
- this.gboxCPUPlotter.Size = new System.Drawing.Size(706, 109);
+ this.gboxCPUPlotter.Size = new System.Drawing.Size(812, 59);
this.gboxCPUPlotter.TabIndex = 2;
this.gboxCPUPlotter.TabStop = false;
this.gboxCPUPlotter.Text = "CPU Usage (Kernel, User)";
@@ -70,7 +172,8 @@
//
// tableGraphs
//
- this.tableGraphs.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ this.tableGraphs.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.tableGraphs.ColumnCount = 1;
this.tableGraphs.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
@@ -86,16 +189,16 @@
this.tableGraphs.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
this.tableGraphs.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
this.tableGraphs.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
- this.tableGraphs.Size = new System.Drawing.Size(712, 370);
+ this.tableGraphs.Size = new System.Drawing.Size(818, 219);
this.tableGraphs.TabIndex = 3;
//
// groupBox1
//
this.groupBox1.Controls.Add(this.plotterMemory);
this.groupBox1.Dock = System.Windows.Forms.DockStyle.Fill;
- this.groupBox1.Location = new System.Drawing.Point(3, 257);
+ this.groupBox1.Location = new System.Drawing.Point(3, 157);
this.groupBox1.Name = "groupBox1";
- this.groupBox1.Size = new System.Drawing.Size(706, 110);
+ this.groupBox1.Size = new System.Drawing.Size(812, 59);
this.groupBox1.TabIndex = 7;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "Commit, Physical Memory";
@@ -104,9 +207,9 @@
//
this.groupBox2.Controls.Add(this.plotterIO);
this.groupBox2.Dock = System.Windows.Forms.DockStyle.Fill;
- this.groupBox2.Location = new System.Drawing.Point(3, 142);
+ this.groupBox2.Location = new System.Drawing.Point(3, 92);
this.groupBox2.Name = "groupBox2";
- this.groupBox2.Size = new System.Drawing.Size(706, 109);
+ this.groupBox2.Size = new System.Drawing.Size(812, 59);
this.groupBox2.TabIndex = 5;
this.groupBox2.TabStop = false;
this.groupBox2.Text = "I/O (R+O, W)";
@@ -115,7 +218,7 @@
//
this.checkShowOneGraphPerCPU.AutoSize = true;
this.checkShowOneGraphPerCPU.FlatStyle = System.Windows.Forms.FlatStyle.System;
- this.checkShowOneGraphPerCPU.Location = new System.Drawing.Point(3, 118);
+ this.checkShowOneGraphPerCPU.Location = new System.Drawing.Point(3, 68);
this.checkShowOneGraphPerCPU.Name = "checkShowOneGraphPerCPU";
this.checkShowOneGraphPerCPU.Size = new System.Drawing.Size(153, 18);
this.checkShowOneGraphPerCPU.TabIndex = 3;
@@ -123,6 +226,893 @@
this.checkShowOneGraphPerCPU.UseVisualStyleBackColor = true;
this.checkShowOneGraphPerCPU.CheckedChanged += new System.EventHandler(this.checkShowOneGraphPerCPU_CheckedChanged);
//
+ // flowInfo
+ //
+ this.flowInfo.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.flowInfo.AutoScroll = true;
+ this.flowInfo.Controls.Add(this.groupBox3);
+ this.flowInfo.Controls.Add(this.groupBox4);
+ this.flowInfo.Controls.Add(this.groupBox5);
+ this.flowInfo.Controls.Add(this.groupBox6);
+ this.flowInfo.Controls.Add(this.groupBox7);
+ this.flowInfo.Controls.Add(this.groupBox8);
+ this.flowInfo.Controls.Add(this.groupBox9);
+ this.flowInfo.Controls.Add(this.groupBox10);
+ this.flowInfo.FlowDirection = System.Windows.Forms.FlowDirection.TopDown;
+ this.flowInfo.Location = new System.Drawing.Point(12, 237);
+ this.flowInfo.Name = "flowInfo";
+ this.flowInfo.Size = new System.Drawing.Size(818, 260);
+ this.flowInfo.TabIndex = 4;
+ //
+ // groupBox3
+ //
+ this.groupBox3.Controls.Add(this.tableLayoutPanel1);
+ this.groupBox3.Location = new System.Drawing.Point(3, 3);
+ this.groupBox3.Name = "groupBox3";
+ this.groupBox3.Size = new System.Drawing.Size(195, 78);
+ this.groupBox3.TabIndex = 1;
+ this.groupBox3.TabStop = false;
+ this.groupBox3.Text = "Totals";
+ //
+ // tableLayoutPanel1
+ //
+ this.tableLayoutPanel1.ColumnCount = 2;
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+ this.tableLayoutPanel1.Controls.Add(this.label6, 0, 0);
+ this.tableLayoutPanel1.Controls.Add(this.label8, 0, 1);
+ this.tableLayoutPanel1.Controls.Add(this.label9, 0, 2);
+ this.tableLayoutPanel1.Controls.Add(this.labelTotalsProcesses, 1, 0);
+ this.tableLayoutPanel1.Controls.Add(this.labelTotalsThreads, 1, 1);
+ this.tableLayoutPanel1.Controls.Add(this.labelTotalsHandles, 1, 2);
+ this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tableLayoutPanel1.Location = new System.Drawing.Point(3, 16);
+ this.tableLayoutPanel1.Name = "tableLayoutPanel1";
+ this.tableLayoutPanel1.RowCount = 3;
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
+ this.tableLayoutPanel1.Size = new System.Drawing.Size(189, 59);
+ this.tableLayoutPanel1.TabIndex = 1;
+ //
+ // label6
+ //
+ this.label6.Anchor = System.Windows.Forms.AnchorStyles.Left;
+ this.label6.AutoSize = true;
+ this.label6.Location = new System.Drawing.Point(3, 3);
+ this.label6.Name = "label6";
+ this.label6.Size = new System.Drawing.Size(56, 13);
+ this.label6.TabIndex = 1;
+ this.label6.Text = "Processes";
+ //
+ // label8
+ //
+ this.label8.Anchor = System.Windows.Forms.AnchorStyles.Left;
+ this.label8.AutoSize = true;
+ this.label8.Location = new System.Drawing.Point(3, 22);
+ this.label8.Name = "label8";
+ this.label8.Size = new System.Drawing.Size(46, 13);
+ this.label8.TabIndex = 1;
+ this.label8.Text = "Threads";
+ //
+ // label9
+ //
+ this.label9.Anchor = System.Windows.Forms.AnchorStyles.Left;
+ this.label9.AutoSize = true;
+ this.label9.Location = new System.Drawing.Point(3, 42);
+ this.label9.Name = "label9";
+ this.label9.Size = new System.Drawing.Size(46, 13);
+ this.label9.TabIndex = 1;
+ this.label9.Text = "Handles";
+ //
+ // labelTotalsProcesses
+ //
+ this.labelTotalsProcesses.Anchor = System.Windows.Forms.AnchorStyles.Right;
+ this.labelTotalsProcesses.AutoSize = true;
+ this.labelTotalsProcesses.Location = new System.Drawing.Point(153, 3);
+ this.labelTotalsProcesses.Name = "labelTotalsProcesses";
+ this.labelTotalsProcesses.Size = new System.Drawing.Size(33, 13);
+ this.labelTotalsProcesses.TabIndex = 1;
+ this.labelTotalsProcesses.Text = "value";
+ //
+ // labelTotalsThreads
+ //
+ this.labelTotalsThreads.Anchor = System.Windows.Forms.AnchorStyles.Right;
+ this.labelTotalsThreads.AutoSize = true;
+ this.labelTotalsThreads.Location = new System.Drawing.Point(153, 22);
+ this.labelTotalsThreads.Name = "labelTotalsThreads";
+ this.labelTotalsThreads.Size = new System.Drawing.Size(33, 13);
+ this.labelTotalsThreads.TabIndex = 1;
+ this.labelTotalsThreads.Text = "value";
+ //
+ // labelTotalsHandles
+ //
+ this.labelTotalsHandles.Anchor = System.Windows.Forms.AnchorStyles.Right;
+ this.labelTotalsHandles.AutoSize = true;
+ this.labelTotalsHandles.Location = new System.Drawing.Point(153, 42);
+ this.labelTotalsHandles.Name = "labelTotalsHandles";
+ this.labelTotalsHandles.Size = new System.Drawing.Size(33, 13);
+ this.labelTotalsHandles.TabIndex = 1;
+ this.labelTotalsHandles.Text = "value";
+ //
+ // groupBox4
+ //
+ this.groupBox4.Controls.Add(this.tableLayoutPanel2);
+ this.groupBox4.Location = new System.Drawing.Point(3, 87);
+ this.groupBox4.Name = "groupBox4";
+ this.groupBox4.Size = new System.Drawing.Size(195, 78);
+ this.groupBox4.TabIndex = 2;
+ this.groupBox4.TabStop = false;
+ this.groupBox4.Text = "Commit Charge";
+ //
+ // tableLayoutPanel2
+ //
+ this.tableLayoutPanel2.ColumnCount = 2;
+ this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+ this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+ this.tableLayoutPanel2.Controls.Add(this.label1, 0, 0);
+ this.tableLayoutPanel2.Controls.Add(this.label2, 0, 1);
+ this.tableLayoutPanel2.Controls.Add(this.label3, 0, 2);
+ this.tableLayoutPanel2.Controls.Add(this.labelCCC, 1, 0);
+ this.tableLayoutPanel2.Controls.Add(this.labelCCP, 1, 1);
+ this.tableLayoutPanel2.Controls.Add(this.labelCCL, 1, 2);
+ this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tableLayoutPanel2.Location = new System.Drawing.Point(3, 16);
+ this.tableLayoutPanel2.Name = "tableLayoutPanel2";
+ this.tableLayoutPanel2.RowCount = 3;
+ this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
+ this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
+ this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
+ this.tableLayoutPanel2.Size = new System.Drawing.Size(189, 59);
+ this.tableLayoutPanel2.TabIndex = 1;
+ //
+ // label1
+ //
+ this.label1.Anchor = System.Windows.Forms.AnchorStyles.Left;
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(3, 3);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(41, 13);
+ this.label1.TabIndex = 1;
+ this.label1.Text = "Current";
+ //
+ // label2
+ //
+ this.label2.Anchor = System.Windows.Forms.AnchorStyles.Left;
+ this.label2.AutoSize = true;
+ this.label2.Location = new System.Drawing.Point(3, 22);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(32, 13);
+ this.label2.TabIndex = 1;
+ this.label2.Text = "Peak";
+ //
+ // label3
+ //
+ this.label3.Anchor = System.Windows.Forms.AnchorStyles.Left;
+ this.label3.AutoSize = true;
+ this.label3.Location = new System.Drawing.Point(3, 42);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(28, 13);
+ this.label3.TabIndex = 1;
+ this.label3.Text = "Limit";
+ //
+ // labelCCC
+ //
+ this.labelCCC.Anchor = System.Windows.Forms.AnchorStyles.Right;
+ this.labelCCC.AutoSize = true;
+ this.labelCCC.Location = new System.Drawing.Point(153, 3);
+ this.labelCCC.Name = "labelCCC";
+ this.labelCCC.Size = new System.Drawing.Size(33, 13);
+ this.labelCCC.TabIndex = 1;
+ this.labelCCC.Text = "value";
+ //
+ // labelCCP
+ //
+ this.labelCCP.Anchor = System.Windows.Forms.AnchorStyles.Right;
+ this.labelCCP.AutoSize = true;
+ this.labelCCP.Location = new System.Drawing.Point(153, 22);
+ this.labelCCP.Name = "labelCCP";
+ this.labelCCP.Size = new System.Drawing.Size(33, 13);
+ this.labelCCP.TabIndex = 1;
+ this.labelCCP.Text = "value";
+ //
+ // labelCCL
+ //
+ this.labelCCL.Anchor = System.Windows.Forms.AnchorStyles.Right;
+ this.labelCCL.AutoSize = true;
+ this.labelCCL.Location = new System.Drawing.Point(153, 42);
+ this.labelCCL.Name = "labelCCL";
+ this.labelCCL.Size = new System.Drawing.Size(33, 13);
+ this.labelCCL.TabIndex = 1;
+ this.labelCCL.Text = "value";
+ //
+ // groupBox5
+ //
+ this.groupBox5.Controls.Add(this.tableLayoutPanel3);
+ this.groupBox5.Location = new System.Drawing.Point(3, 171);
+ this.groupBox5.Name = "groupBox5";
+ this.groupBox5.Size = new System.Drawing.Size(195, 56);
+ this.groupBox5.TabIndex = 3;
+ this.groupBox5.TabStop = false;
+ this.groupBox5.Text = "Physical Memory";
+ //
+ // tableLayoutPanel3
+ //
+ this.tableLayoutPanel3.ColumnCount = 2;
+ this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+ this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+ this.tableLayoutPanel3.Controls.Add(this.label4, 0, 0);
+ this.tableLayoutPanel3.Controls.Add(this.label7, 0, 1);
+ this.tableLayoutPanel3.Controls.Add(this.labelPMC, 1, 0);
+ this.tableLayoutPanel3.Controls.Add(this.labelPMT, 1, 1);
+ this.tableLayoutPanel3.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tableLayoutPanel3.Location = new System.Drawing.Point(3, 16);
+ this.tableLayoutPanel3.Name = "tableLayoutPanel3";
+ this.tableLayoutPanel3.RowCount = 2;
+ this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
+ this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
+ this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
+ this.tableLayoutPanel3.Size = new System.Drawing.Size(189, 37);
+ this.tableLayoutPanel3.TabIndex = 1;
+ //
+ // label4
+ //
+ this.label4.Anchor = System.Windows.Forms.AnchorStyles.Left;
+ this.label4.AutoSize = true;
+ this.label4.Location = new System.Drawing.Point(3, 2);
+ this.label4.Name = "label4";
+ this.label4.Size = new System.Drawing.Size(41, 13);
+ this.label4.TabIndex = 1;
+ this.label4.Text = "Current";
+ //
+ // label7
+ //
+ this.label7.Anchor = System.Windows.Forms.AnchorStyles.Left;
+ this.label7.AutoSize = true;
+ this.label7.Location = new System.Drawing.Point(3, 21);
+ this.label7.Name = "label7";
+ this.label7.Size = new System.Drawing.Size(31, 13);
+ this.label7.TabIndex = 1;
+ this.label7.Text = "Total";
+ //
+ // labelPMC
+ //
+ this.labelPMC.Anchor = System.Windows.Forms.AnchorStyles.Right;
+ this.labelPMC.AutoSize = true;
+ this.labelPMC.Location = new System.Drawing.Point(153, 2);
+ this.labelPMC.Name = "labelPMC";
+ this.labelPMC.Size = new System.Drawing.Size(33, 13);
+ this.labelPMC.TabIndex = 1;
+ this.labelPMC.Text = "value";
+ //
+ // labelPMT
+ //
+ this.labelPMT.Anchor = System.Windows.Forms.AnchorStyles.Right;
+ this.labelPMT.AutoSize = true;
+ this.labelPMT.Location = new System.Drawing.Point(153, 21);
+ this.labelPMT.Name = "labelPMT";
+ this.labelPMT.Size = new System.Drawing.Size(33, 13);
+ this.labelPMT.TabIndex = 1;
+ this.labelPMT.Text = "value";
+ //
+ // groupBox6
+ //
+ this.groupBox6.Controls.Add(this.tableLayoutPanel4);
+ this.groupBox6.Location = new System.Drawing.Point(204, 3);
+ this.groupBox6.Name = "groupBox6";
+ this.groupBox6.Size = new System.Drawing.Size(195, 84);
+ this.groupBox6.TabIndex = 4;
+ this.groupBox6.TabStop = false;
+ this.groupBox6.Text = "Cache";
+ //
+ // tableLayoutPanel4
+ //
+ this.tableLayoutPanel4.ColumnCount = 2;
+ this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+ this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+ this.tableLayoutPanel4.Controls.Add(this.label15, 0, 3);
+ this.tableLayoutPanel4.Controls.Add(this.labelCacheMaximum, 0, 3);
+ this.tableLayoutPanel4.Controls.Add(this.label13, 0, 2);
+ this.tableLayoutPanel4.Controls.Add(this.labelCacheMinimum, 0, 2);
+ this.tableLayoutPanel4.Controls.Add(this.label5, 0, 0);
+ this.tableLayoutPanel4.Controls.Add(this.label10, 0, 1);
+ this.tableLayoutPanel4.Controls.Add(this.labelCacheCurrent, 1, 0);
+ this.tableLayoutPanel4.Controls.Add(this.labelCachePeak, 1, 1);
+ this.tableLayoutPanel4.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tableLayoutPanel4.Location = new System.Drawing.Point(3, 16);
+ this.tableLayoutPanel4.Name = "tableLayoutPanel4";
+ this.tableLayoutPanel4.RowCount = 4;
+ this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
+ this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
+ this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
+ this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
+ this.tableLayoutPanel4.Size = new System.Drawing.Size(189, 65);
+ this.tableLayoutPanel4.TabIndex = 1;
+ //
+ // label15
+ //
+ this.label15.Anchor = System.Windows.Forms.AnchorStyles.Left;
+ this.label15.AutoSize = true;
+ this.label15.Location = new System.Drawing.Point(3, 50);
+ this.label15.Name = "label15";
+ this.label15.Size = new System.Drawing.Size(51, 13);
+ this.label15.TabIndex = 5;
+ this.label15.Text = "Maximum";
+ //
+ // labelCacheMaximum
+ //
+ this.labelCacheMaximum.Anchor = System.Windows.Forms.AnchorStyles.Right;
+ this.labelCacheMaximum.AutoSize = true;
+ this.labelCacheMaximum.Location = new System.Drawing.Point(153, 50);
+ this.labelCacheMaximum.Name = "labelCacheMaximum";
+ this.labelCacheMaximum.Size = new System.Drawing.Size(33, 13);
+ this.labelCacheMaximum.TabIndex = 4;
+ this.labelCacheMaximum.Text = "value";
+ //
+ // label13
+ //
+ this.label13.Anchor = System.Windows.Forms.AnchorStyles.Left;
+ this.label13.AutoSize = true;
+ this.label13.Location = new System.Drawing.Point(3, 33);
+ this.label13.Name = "label13";
+ this.label13.Size = new System.Drawing.Size(48, 13);
+ this.label13.TabIndex = 3;
+ this.label13.Text = "Minimum";
+ //
+ // labelCacheMinimum
+ //
+ this.labelCacheMinimum.Anchor = System.Windows.Forms.AnchorStyles.Right;
+ this.labelCacheMinimum.AutoSize = true;
+ this.labelCacheMinimum.Location = new System.Drawing.Point(153, 33);
+ this.labelCacheMinimum.Name = "labelCacheMinimum";
+ this.labelCacheMinimum.Size = new System.Drawing.Size(33, 13);
+ this.labelCacheMinimum.TabIndex = 2;
+ this.labelCacheMinimum.Text = "value";
+ //
+ // label5
+ //
+ this.label5.Anchor = System.Windows.Forms.AnchorStyles.Left;
+ this.label5.AutoSize = true;
+ this.label5.Location = new System.Drawing.Point(3, 1);
+ this.label5.Name = "label5";
+ this.label5.Size = new System.Drawing.Size(41, 13);
+ this.label5.TabIndex = 1;
+ this.label5.Text = "Current";
+ //
+ // label10
+ //
+ this.label10.Anchor = System.Windows.Forms.AnchorStyles.Left;
+ this.label10.AutoSize = true;
+ this.label10.Location = new System.Drawing.Point(3, 17);
+ this.label10.Name = "label10";
+ this.label10.Size = new System.Drawing.Size(32, 13);
+ this.label10.TabIndex = 1;
+ this.label10.Text = "Peak";
+ //
+ // labelCacheCurrent
+ //
+ this.labelCacheCurrent.Anchor = System.Windows.Forms.AnchorStyles.Right;
+ this.labelCacheCurrent.AutoSize = true;
+ this.labelCacheCurrent.Location = new System.Drawing.Point(153, 1);
+ this.labelCacheCurrent.Name = "labelCacheCurrent";
+ this.labelCacheCurrent.Size = new System.Drawing.Size(33, 13);
+ this.labelCacheCurrent.TabIndex = 1;
+ this.labelCacheCurrent.Text = "value";
+ //
+ // labelCachePeak
+ //
+ this.labelCachePeak.Anchor = System.Windows.Forms.AnchorStyles.Right;
+ this.labelCachePeak.AutoSize = true;
+ this.labelCachePeak.Location = new System.Drawing.Point(153, 17);
+ this.labelCachePeak.Name = "labelCachePeak";
+ this.labelCachePeak.Size = new System.Drawing.Size(33, 13);
+ this.labelCachePeak.TabIndex = 1;
+ this.labelCachePeak.Text = "value";
+ //
+ // groupBox7
+ //
+ this.groupBox7.Controls.Add(this.tableLayoutPanel5);
+ this.groupBox7.Location = new System.Drawing.Point(204, 93);
+ this.groupBox7.Name = "groupBox7";
+ this.groupBox7.Size = new System.Drawing.Size(195, 141);
+ this.groupBox7.TabIndex = 5;
+ this.groupBox7.TabStop = false;
+ this.groupBox7.Text = "Kernel Pools";
+ //
+ // tableLayoutPanel5
+ //
+ this.tableLayoutPanel5.ColumnCount = 2;
+ this.tableLayoutPanel5.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+ this.tableLayoutPanel5.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+ this.tableLayoutPanel5.Controls.Add(this.label23, 0, 6);
+ this.tableLayoutPanel5.Controls.Add(this.labelKPNPF, 0, 6);
+ this.tableLayoutPanel5.Controls.Add(this.label21, 0, 5);
+ this.tableLayoutPanel5.Controls.Add(this.labelKPNPA, 0, 5);
+ this.tableLayoutPanel5.Controls.Add(this.label11, 0, 4);
+ this.tableLayoutPanel5.Controls.Add(this.label14, 0, 3);
+ this.tableLayoutPanel5.Controls.Add(this.labelKPNPU, 0, 4);
+ this.tableLayoutPanel5.Controls.Add(this.label17, 0, 0);
+ this.tableLayoutPanel5.Controls.Add(this.label18, 0, 2);
+ this.tableLayoutPanel5.Controls.Add(this.labelKPPPU, 1, 0);
+ this.tableLayoutPanel5.Controls.Add(this.labelKPPA, 1, 2);
+ this.tableLayoutPanel5.Controls.Add(this.label12, 0, 1);
+ this.tableLayoutPanel5.Controls.Add(this.labelKPPVU, 1, 1);
+ this.tableLayoutPanel5.Controls.Add(this.labelKPPF, 1, 3);
+ this.tableLayoutPanel5.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tableLayoutPanel5.Location = new System.Drawing.Point(3, 16);
+ this.tableLayoutPanel5.Name = "tableLayoutPanel5";
+ this.tableLayoutPanel5.RowCount = 7;
+ this.tableLayoutPanel5.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571F));
+ this.tableLayoutPanel5.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571F));
+ this.tableLayoutPanel5.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571F));
+ this.tableLayoutPanel5.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571F));
+ this.tableLayoutPanel5.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571F));
+ this.tableLayoutPanel5.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571F));
+ this.tableLayoutPanel5.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14.28571F));
+ this.tableLayoutPanel5.Size = new System.Drawing.Size(189, 122);
+ this.tableLayoutPanel5.TabIndex = 1;
+ //
+ // label23
+ //
+ this.label23.Anchor = System.Windows.Forms.AnchorStyles.Left;
+ this.label23.AutoSize = true;
+ this.label23.Location = new System.Drawing.Point(3, 105);
+ this.label23.Name = "label23";
+ this.label23.Size = new System.Drawing.Size(90, 13);
+ this.label23.TabIndex = 9;
+ this.label23.Text = "Non-Paged Frees";
+ //
+ // labelKPNPF
+ //
+ this.labelKPNPF.Anchor = System.Windows.Forms.AnchorStyles.Right;
+ this.labelKPNPF.AutoSize = true;
+ this.labelKPNPF.Location = new System.Drawing.Point(153, 105);
+ this.labelKPNPF.Name = "labelKPNPF";
+ this.labelKPNPF.Size = new System.Drawing.Size(33, 13);
+ this.labelKPNPF.TabIndex = 8;
+ this.labelKPNPF.Text = "value";
+ //
+ // label21
+ //
+ this.label21.Anchor = System.Windows.Forms.AnchorStyles.Left;
+ this.label21.AutoSize = true;
+ this.label21.Location = new System.Drawing.Point(3, 87);
+ this.label21.Name = "label21";
+ this.label21.Size = new System.Drawing.Size(92, 13);
+ this.label21.TabIndex = 7;
+ this.label21.Text = "Non-Paged Allocs";
+ //
+ // labelKPNPA
+ //
+ this.labelKPNPA.Anchor = System.Windows.Forms.AnchorStyles.Right;
+ this.labelKPNPA.AutoSize = true;
+ this.labelKPNPA.Location = new System.Drawing.Point(153, 87);
+ this.labelKPNPA.Name = "labelKPNPA";
+ this.labelKPNPA.Size = new System.Drawing.Size(33, 13);
+ this.labelKPNPA.TabIndex = 6;
+ this.labelKPNPA.Text = "value";
+ //
+ // label11
+ //
+ this.label11.Anchor = System.Windows.Forms.AnchorStyles.Left;
+ this.label11.AutoSize = true;
+ this.label11.Location = new System.Drawing.Point(3, 70);
+ this.label11.Name = "label11";
+ this.label11.Size = new System.Drawing.Size(95, 13);
+ this.label11.TabIndex = 5;
+ this.label11.Text = "Non-Paged Usage";
+ //
+ // label14
+ //
+ this.label14.Anchor = System.Windows.Forms.AnchorStyles.Left;
+ this.label14.AutoSize = true;
+ this.label14.Location = new System.Drawing.Point(3, 53);
+ this.label14.Name = "label14";
+ this.label14.Size = new System.Drawing.Size(67, 13);
+ this.label14.TabIndex = 3;
+ this.label14.Text = "Paged Frees";
+ //
+ // labelKPNPU
+ //
+ this.labelKPNPU.Anchor = System.Windows.Forms.AnchorStyles.Right;
+ this.labelKPNPU.AutoSize = true;
+ this.labelKPNPU.Location = new System.Drawing.Point(153, 70);
+ this.labelKPNPU.Name = "labelKPNPU";
+ this.labelKPNPU.Size = new System.Drawing.Size(33, 13);
+ this.labelKPNPU.TabIndex = 4;
+ this.labelKPNPU.Text = "value";
+ //
+ // label17
+ //
+ this.label17.Anchor = System.Windows.Forms.AnchorStyles.Left;
+ this.label17.AutoSize = true;
+ this.label17.Location = new System.Drawing.Point(3, 2);
+ this.label17.Name = "label17";
+ this.label17.Size = new System.Drawing.Size(67, 13);
+ this.label17.TabIndex = 1;
+ this.label17.Text = "Paged Phys.";
+ //
+ // label18
+ //
+ this.label18.Anchor = System.Windows.Forms.AnchorStyles.Left;
+ this.label18.AutoSize = true;
+ this.label18.Location = new System.Drawing.Point(3, 36);
+ this.label18.Name = "label18";
+ this.label18.Size = new System.Drawing.Size(69, 13);
+ this.label18.TabIndex = 1;
+ this.label18.Text = "Paged Allocs";
+ //
+ // labelKPPPU
+ //
+ this.labelKPPPU.Anchor = System.Windows.Forms.AnchorStyles.Right;
+ this.labelKPPPU.AutoSize = true;
+ this.labelKPPPU.Location = new System.Drawing.Point(153, 2);
+ this.labelKPPPU.Name = "labelKPPPU";
+ this.labelKPPPU.Size = new System.Drawing.Size(33, 13);
+ this.labelKPPPU.TabIndex = 1;
+ this.labelKPPPU.Text = "value";
+ //
+ // labelKPPA
+ //
+ this.labelKPPA.Anchor = System.Windows.Forms.AnchorStyles.Right;
+ this.labelKPPA.AutoSize = true;
+ this.labelKPPA.Location = new System.Drawing.Point(153, 36);
+ this.labelKPPA.Name = "labelKPPA";
+ this.labelKPPA.Size = new System.Drawing.Size(33, 13);
+ this.labelKPPA.TabIndex = 1;
+ this.labelKPPA.Text = "value";
+ //
+ // label12
+ //
+ this.label12.Anchor = System.Windows.Forms.AnchorStyles.Left;
+ this.label12.AutoSize = true;
+ this.label12.Location = new System.Drawing.Point(3, 19);
+ this.label12.Name = "label12";
+ this.label12.Size = new System.Drawing.Size(59, 13);
+ this.label12.TabIndex = 1;
+ this.label12.Text = "Paged Virt.";
+ //
+ // labelKPPVU
+ //
+ this.labelKPPVU.Anchor = System.Windows.Forms.AnchorStyles.Right;
+ this.labelKPPVU.AutoSize = true;
+ this.labelKPPVU.Location = new System.Drawing.Point(153, 19);
+ this.labelKPPVU.Name = "labelKPPVU";
+ this.labelKPPVU.Size = new System.Drawing.Size(33, 13);
+ this.labelKPPVU.TabIndex = 1;
+ this.labelKPPVU.Text = "value";
+ //
+ // labelKPPF
+ //
+ this.labelKPPF.Anchor = System.Windows.Forms.AnchorStyles.Right;
+ this.labelKPPF.AutoSize = true;
+ this.labelKPPF.Location = new System.Drawing.Point(153, 53);
+ this.labelKPPF.Name = "labelKPPF";
+ this.labelKPPF.Size = new System.Drawing.Size(33, 13);
+ this.labelKPPF.TabIndex = 2;
+ this.labelKPPF.Text = "value";
+ //
+ // groupBox8
+ //
+ this.groupBox8.Controls.Add(this.tableLayoutPanel6);
+ this.groupBox8.Location = new System.Drawing.Point(405, 3);
+ this.groupBox8.Name = "groupBox8";
+ this.groupBox8.Size = new System.Drawing.Size(195, 121);
+ this.groupBox8.TabIndex = 6;
+ this.groupBox8.TabStop = false;
+ this.groupBox8.Text = "Page Faults";
+ //
+ // tableLayoutPanel6
+ //
+ this.tableLayoutPanel6.ColumnCount = 2;
+ this.tableLayoutPanel6.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+ this.tableLayoutPanel6.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+ this.tableLayoutPanel6.Controls.Add(this.label20, 0, 5);
+ this.tableLayoutPanel6.Controls.Add(this.labelPFCache, 0, 5);
+ this.tableLayoutPanel6.Controls.Add(this.label24, 0, 4);
+ this.tableLayoutPanel6.Controls.Add(this.label25, 0, 3);
+ this.tableLayoutPanel6.Controls.Add(this.labelPFDZ, 0, 4);
+ this.tableLayoutPanel6.Controls.Add(this.label27, 0, 0);
+ this.tableLayoutPanel6.Controls.Add(this.label28, 0, 2);
+ this.tableLayoutPanel6.Controls.Add(this.labelPFTotal, 1, 0);
+ this.tableLayoutPanel6.Controls.Add(this.labelPFTrans, 1, 2);
+ this.tableLayoutPanel6.Controls.Add(this.label31, 0, 1);
+ this.tableLayoutPanel6.Controls.Add(this.labelPFCOW, 1, 1);
+ this.tableLayoutPanel6.Controls.Add(this.labelPFCacheTrans, 1, 3);
+ this.tableLayoutPanel6.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tableLayoutPanel6.Location = new System.Drawing.Point(3, 16);
+ this.tableLayoutPanel6.Name = "tableLayoutPanel6";
+ this.tableLayoutPanel6.RowCount = 6;
+ this.tableLayoutPanel6.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667F));
+ this.tableLayoutPanel6.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667F));
+ this.tableLayoutPanel6.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667F));
+ this.tableLayoutPanel6.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667F));
+ this.tableLayoutPanel6.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667F));
+ this.tableLayoutPanel6.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667F));
+ this.tableLayoutPanel6.Size = new System.Drawing.Size(189, 102);
+ this.tableLayoutPanel6.TabIndex = 1;
+ //
+ // label20
+ //
+ this.label20.Anchor = System.Windows.Forms.AnchorStyles.Left;
+ this.label20.AutoSize = true;
+ this.label20.Location = new System.Drawing.Point(3, 84);
+ this.label20.Name = "label20";
+ this.label20.Size = new System.Drawing.Size(38, 13);
+ this.label20.TabIndex = 7;
+ this.label20.Text = "Cache";
+ //
+ // labelPFCache
+ //
+ this.labelPFCache.Anchor = System.Windows.Forms.AnchorStyles.Right;
+ this.labelPFCache.AutoSize = true;
+ this.labelPFCache.Location = new System.Drawing.Point(153, 84);
+ this.labelPFCache.Name = "labelPFCache";
+ this.labelPFCache.Size = new System.Drawing.Size(33, 13);
+ this.labelPFCache.TabIndex = 6;
+ this.labelPFCache.Text = "value";
+ //
+ // label24
+ //
+ this.label24.Anchor = System.Windows.Forms.AnchorStyles.Left;
+ this.label24.AutoSize = true;
+ this.label24.Location = new System.Drawing.Point(3, 65);
+ this.label24.Name = "label24";
+ this.label24.Size = new System.Drawing.Size(72, 13);
+ this.label24.TabIndex = 5;
+ this.label24.Text = "Demand Zero";
+ //
+ // label25
+ //
+ this.label25.Anchor = System.Windows.Forms.AnchorStyles.Left;
+ this.label25.AutoSize = true;
+ this.label25.Location = new System.Drawing.Point(3, 49);
+ this.label25.Name = "label25";
+ this.label25.Size = new System.Drawing.Size(87, 13);
+ this.label25.TabIndex = 3;
+ this.label25.Text = "Cache Transition";
+ //
+ // labelPFDZ
+ //
+ this.labelPFDZ.Anchor = System.Windows.Forms.AnchorStyles.Right;
+ this.labelPFDZ.AutoSize = true;
+ this.labelPFDZ.Location = new System.Drawing.Point(153, 65);
+ this.labelPFDZ.Name = "labelPFDZ";
+ this.labelPFDZ.Size = new System.Drawing.Size(33, 13);
+ this.labelPFDZ.TabIndex = 4;
+ this.labelPFDZ.Text = "value";
+ //
+ // label27
+ //
+ this.label27.Anchor = System.Windows.Forms.AnchorStyles.Left;
+ this.label27.AutoSize = true;
+ this.label27.Location = new System.Drawing.Point(3, 1);
+ this.label27.Name = "label27";
+ this.label27.Size = new System.Drawing.Size(31, 13);
+ this.label27.TabIndex = 1;
+ this.label27.Text = "Total";
+ //
+ // label28
+ //
+ this.label28.Anchor = System.Windows.Forms.AnchorStyles.Left;
+ this.label28.AutoSize = true;
+ this.label28.Location = new System.Drawing.Point(3, 33);
+ this.label28.Name = "label28";
+ this.label28.Size = new System.Drawing.Size(53, 13);
+ this.label28.TabIndex = 1;
+ this.label28.Text = "Transition";
+ //
+ // labelPFTotal
+ //
+ this.labelPFTotal.Anchor = System.Windows.Forms.AnchorStyles.Right;
+ this.labelPFTotal.AutoSize = true;
+ this.labelPFTotal.Location = new System.Drawing.Point(153, 1);
+ this.labelPFTotal.Name = "labelPFTotal";
+ this.labelPFTotal.Size = new System.Drawing.Size(33, 13);
+ this.labelPFTotal.TabIndex = 1;
+ this.labelPFTotal.Text = "value";
+ //
+ // labelPFTrans
+ //
+ this.labelPFTrans.Anchor = System.Windows.Forms.AnchorStyles.Right;
+ this.labelPFTrans.AutoSize = true;
+ this.labelPFTrans.Location = new System.Drawing.Point(153, 33);
+ this.labelPFTrans.Name = "labelPFTrans";
+ this.labelPFTrans.Size = new System.Drawing.Size(33, 13);
+ this.labelPFTrans.TabIndex = 1;
+ this.labelPFTrans.Text = "value";
+ //
+ // label31
+ //
+ this.label31.Anchor = System.Windows.Forms.AnchorStyles.Left;
+ this.label31.AutoSize = true;
+ this.label31.Location = new System.Drawing.Point(3, 17);
+ this.label31.Name = "label31";
+ this.label31.Size = new System.Drawing.Size(76, 13);
+ this.label31.TabIndex = 1;
+ this.label31.Text = "Copy-On-Write";
+ //
+ // labelPFCOW
+ //
+ this.labelPFCOW.Anchor = System.Windows.Forms.AnchorStyles.Right;
+ this.labelPFCOW.AutoSize = true;
+ this.labelPFCOW.Location = new System.Drawing.Point(153, 17);
+ this.labelPFCOW.Name = "labelPFCOW";
+ this.labelPFCOW.Size = new System.Drawing.Size(33, 13);
+ this.labelPFCOW.TabIndex = 1;
+ this.labelPFCOW.Text = "value";
+ //
+ // labelPFCacheTrans
+ //
+ this.labelPFCacheTrans.Anchor = System.Windows.Forms.AnchorStyles.Right;
+ this.labelPFCacheTrans.AutoSize = true;
+ this.labelPFCacheTrans.Location = new System.Drawing.Point(153, 49);
+ this.labelPFCacheTrans.Name = "labelPFCacheTrans";
+ this.labelPFCacheTrans.Size = new System.Drawing.Size(33, 13);
+ this.labelPFCacheTrans.TabIndex = 2;
+ this.labelPFCacheTrans.Text = "value";
+ //
+ // groupBox9
+ //
+ this.groupBox9.Controls.Add(this.tableLayoutPanel7);
+ this.groupBox9.Location = new System.Drawing.Point(405, 130);
+ this.groupBox9.Name = "groupBox9";
+ this.groupBox9.Size = new System.Drawing.Size(195, 121);
+ this.groupBox9.TabIndex = 7;
+ this.groupBox9.TabStop = false;
+ this.groupBox9.Text = "I/O";
+ //
+ // tableLayoutPanel7
+ //
+ this.tableLayoutPanel7.ColumnCount = 2;
+ this.tableLayoutPanel7.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+ this.tableLayoutPanel7.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+ this.tableLayoutPanel7.Controls.Add(this.label16, 0, 5);
+ this.tableLayoutPanel7.Controls.Add(this.labelIOOB, 0, 5);
+ this.tableLayoutPanel7.Controls.Add(this.label22, 0, 4);
+ this.tableLayoutPanel7.Controls.Add(this.label26, 0, 3);
+ this.tableLayoutPanel7.Controls.Add(this.labelIOO, 0, 4);
+ this.tableLayoutPanel7.Controls.Add(this.label30, 0, 0);
+ this.tableLayoutPanel7.Controls.Add(this.label32, 0, 2);
+ this.tableLayoutPanel7.Controls.Add(this.labelIOR, 1, 0);
+ this.tableLayoutPanel7.Controls.Add(this.labelIOW, 1, 2);
+ this.tableLayoutPanel7.Controls.Add(this.label35, 0, 1);
+ this.tableLayoutPanel7.Controls.Add(this.labelIORB, 1, 1);
+ this.tableLayoutPanel7.Controls.Add(this.labelIOWB, 1, 3);
+ this.tableLayoutPanel7.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tableLayoutPanel7.Location = new System.Drawing.Point(3, 16);
+ this.tableLayoutPanel7.Name = "tableLayoutPanel7";
+ this.tableLayoutPanel7.RowCount = 6;
+ this.tableLayoutPanel7.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667F));
+ this.tableLayoutPanel7.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667F));
+ this.tableLayoutPanel7.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667F));
+ this.tableLayoutPanel7.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667F));
+ this.tableLayoutPanel7.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667F));
+ this.tableLayoutPanel7.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667F));
+ this.tableLayoutPanel7.Size = new System.Drawing.Size(189, 102);
+ this.tableLayoutPanel7.TabIndex = 1;
+ //
+ // label16
+ //
+ this.label16.Anchor = System.Windows.Forms.AnchorStyles.Left;
+ this.label16.AutoSize = true;
+ this.label16.Location = new System.Drawing.Point(3, 84);
+ this.label16.Name = "label16";
+ this.label16.Size = new System.Drawing.Size(62, 13);
+ this.label16.TabIndex = 7;
+ this.label16.Text = "Other Bytes";
+ //
+ // labelIOOB
+ //
+ this.labelIOOB.Anchor = System.Windows.Forms.AnchorStyles.Right;
+ this.labelIOOB.AutoSize = true;
+ this.labelIOOB.Location = new System.Drawing.Point(153, 84);
+ this.labelIOOB.Name = "labelIOOB";
+ this.labelIOOB.Size = new System.Drawing.Size(33, 13);
+ this.labelIOOB.TabIndex = 6;
+ this.labelIOOB.Text = "value";
+ //
+ // label22
+ //
+ this.label22.Anchor = System.Windows.Forms.AnchorStyles.Left;
+ this.label22.AutoSize = true;
+ this.label22.Location = new System.Drawing.Point(3, 65);
+ this.label22.Name = "label22";
+ this.label22.Size = new System.Drawing.Size(33, 13);
+ this.label22.TabIndex = 5;
+ this.label22.Text = "Other";
+ //
+ // label26
+ //
+ this.label26.Anchor = System.Windows.Forms.AnchorStyles.Left;
+ this.label26.AutoSize = true;
+ this.label26.Location = new System.Drawing.Point(3, 49);
+ this.label26.Name = "label26";
+ this.label26.Size = new System.Drawing.Size(61, 13);
+ this.label26.TabIndex = 3;
+ this.label26.Text = "Write Bytes";
+ //
+ // labelIOO
+ //
+ this.labelIOO.Anchor = System.Windows.Forms.AnchorStyles.Right;
+ this.labelIOO.AutoSize = true;
+ this.labelIOO.Location = new System.Drawing.Point(153, 65);
+ this.labelIOO.Name = "labelIOO";
+ this.labelIOO.Size = new System.Drawing.Size(33, 13);
+ this.labelIOO.TabIndex = 4;
+ this.labelIOO.Text = "value";
+ //
+ // label30
+ //
+ this.label30.Anchor = System.Windows.Forms.AnchorStyles.Left;
+ this.label30.AutoSize = true;
+ this.label30.Location = new System.Drawing.Point(3, 1);
+ this.label30.Name = "label30";
+ this.label30.Size = new System.Drawing.Size(38, 13);
+ this.label30.TabIndex = 1;
+ this.label30.Text = "Reads";
+ //
+ // label32
+ //
+ this.label32.Anchor = System.Windows.Forms.AnchorStyles.Left;
+ this.label32.AutoSize = true;
+ this.label32.Location = new System.Drawing.Point(3, 33);
+ this.label32.Name = "label32";
+ this.label32.Size = new System.Drawing.Size(37, 13);
+ this.label32.TabIndex = 1;
+ this.label32.Text = "Writes";
+ //
+ // labelIOR
+ //
+ this.labelIOR.Anchor = System.Windows.Forms.AnchorStyles.Right;
+ this.labelIOR.AutoSize = true;
+ this.labelIOR.Location = new System.Drawing.Point(153, 1);
+ this.labelIOR.Name = "labelIOR";
+ this.labelIOR.Size = new System.Drawing.Size(33, 13);
+ this.labelIOR.TabIndex = 1;
+ this.labelIOR.Text = "value";
+ //
+ // labelIOW
+ //
+ this.labelIOW.Anchor = System.Windows.Forms.AnchorStyles.Right;
+ this.labelIOW.AutoSize = true;
+ this.labelIOW.Location = new System.Drawing.Point(153, 33);
+ this.labelIOW.Name = "labelIOW";
+ this.labelIOW.Size = new System.Drawing.Size(33, 13);
+ this.labelIOW.TabIndex = 1;
+ this.labelIOW.Text = "value";
+ //
+ // label35
+ //
+ this.label35.Anchor = System.Windows.Forms.AnchorStyles.Left;
+ this.label35.AutoSize = true;
+ this.label35.Location = new System.Drawing.Point(3, 17);
+ this.label35.Name = "label35";
+ this.label35.Size = new System.Drawing.Size(62, 13);
+ this.label35.TabIndex = 1;
+ this.label35.Text = "Read Bytes";
+ //
+ // labelIORB
+ //
+ this.labelIORB.Anchor = System.Windows.Forms.AnchorStyles.Right;
+ this.labelIORB.AutoSize = true;
+ this.labelIORB.Location = new System.Drawing.Point(153, 17);
+ this.labelIORB.Name = "labelIORB";
+ this.labelIORB.Size = new System.Drawing.Size(33, 13);
+ this.labelIORB.TabIndex = 1;
+ this.labelIORB.Text = "value";
+ //
+ // labelIOWB
+ //
+ this.labelIOWB.Anchor = System.Windows.Forms.AnchorStyles.Right;
+ this.labelIOWB.AutoSize = true;
+ this.labelIOWB.Location = new System.Drawing.Point(153, 49);
+ this.labelIOWB.Name = "labelIOWB";
+ this.labelIOWB.Size = new System.Drawing.Size(33, 13);
+ this.labelIOWB.TabIndex = 2;
+ this.labelIOWB.Text = "value";
+ //
// plotterMemory
//
this.plotterMemory.BackColor = System.Drawing.Color.Black;
@@ -135,14 +1125,14 @@
this.plotterMemory.Location = new System.Drawing.Point(3, 16);
this.plotterMemory.MoveStep = 3;
this.plotterMemory.Name = "plotterMemory";
- this.plotterMemory.Size = new System.Drawing.Size(700, 91);
+ this.plotterMemory.Size = new System.Drawing.Size(806, 40);
this.plotterMemory.TabIndex = 5;
this.plotterMemory.TextBoxColor = System.Drawing.Color.FromArgb(((int)(((byte)(127)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
this.plotterMemory.TextColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(255)))), ((int)(((byte)(0)))));
this.plotterMemory.TextMargin = new System.Windows.Forms.Padding(3);
this.plotterMemory.TextPadding = new System.Windows.Forms.Padding(3);
this.plotterMemory.TextPosition = System.Drawing.ContentAlignment.TopLeft;
- this.plotterMemory.UseSecondLine = false;
+ this.plotterMemory.UseSecondLine = true;
//
// plotterIO
//
@@ -156,14 +1146,14 @@
this.plotterIO.Location = new System.Drawing.Point(3, 16);
this.plotterIO.MoveStep = 3;
this.plotterIO.Name = "plotterIO";
- this.plotterIO.Size = new System.Drawing.Size(700, 90);
+ this.plotterIO.Size = new System.Drawing.Size(806, 40);
this.plotterIO.TabIndex = 5;
this.plotterIO.TextBoxColor = System.Drawing.Color.FromArgb(((int)(((byte)(127)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
this.plotterIO.TextColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(255)))), ((int)(((byte)(0)))));
this.plotterIO.TextMargin = new System.Windows.Forms.Padding(3);
this.plotterIO.TextPadding = new System.Windows.Forms.Padding(3);
this.plotterIO.TextPosition = System.Drawing.ContentAlignment.TopLeft;
- this.plotterIO.UseSecondLine = false;
+ this.plotterIO.UseSecondLine = true;
//
// plotterCPU
//
@@ -177,31 +1167,147 @@
this.plotterCPU.Location = new System.Drawing.Point(3, 16);
this.plotterCPU.MoveStep = 3;
this.plotterCPU.Name = "plotterCPU";
- this.plotterCPU.Size = new System.Drawing.Size(700, 90);
+ this.plotterCPU.Size = new System.Drawing.Size(806, 40);
this.plotterCPU.TabIndex = 0;
this.plotterCPU.TextBoxColor = System.Drawing.Color.FromArgb(((int)(((byte)(127)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
this.plotterCPU.TextColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(255)))), ((int)(((byte)(0)))));
this.plotterCPU.TextMargin = new System.Windows.Forms.Padding(3);
this.plotterCPU.TextPadding = new System.Windows.Forms.Padding(3);
this.plotterCPU.TextPosition = System.Drawing.ContentAlignment.TopLeft;
- this.plotterCPU.UseSecondLine = false;
+ this.plotterCPU.UseSecondLine = true;
+ //
+ // groupBox10
+ //
+ this.groupBox10.Controls.Add(this.tableLayoutPanel8);
+ this.groupBox10.Location = new System.Drawing.Point(606, 3);
+ this.groupBox10.Name = "groupBox10";
+ this.groupBox10.Size = new System.Drawing.Size(195, 76);
+ this.groupBox10.TabIndex = 8;
+ this.groupBox10.TabStop = false;
+ this.groupBox10.Text = "CPU";
+ //
+ // tableLayoutPanel8
+ //
+ this.tableLayoutPanel8.ColumnCount = 2;
+ this.tableLayoutPanel8.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+ this.tableLayoutPanel8.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+ this.tableLayoutPanel8.Controls.Add(this.label37, 0, 0);
+ this.tableLayoutPanel8.Controls.Add(this.label38, 0, 2);
+ this.tableLayoutPanel8.Controls.Add(this.labelCPUContextSwitches, 1, 0);
+ this.tableLayoutPanel8.Controls.Add(this.labelCPUSystemCalls, 1, 2);
+ this.tableLayoutPanel8.Controls.Add(this.label41, 0, 1);
+ this.tableLayoutPanel8.Controls.Add(this.labelCPUInterrupts, 1, 1);
+ this.tableLayoutPanel8.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tableLayoutPanel8.Location = new System.Drawing.Point(3, 16);
+ this.tableLayoutPanel8.Name = "tableLayoutPanel8";
+ this.tableLayoutPanel8.RowCount = 3;
+ this.tableLayoutPanel8.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667F));
+ this.tableLayoutPanel8.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667F));
+ this.tableLayoutPanel8.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 16.66667F));
+ this.tableLayoutPanel8.Size = new System.Drawing.Size(189, 57);
+ this.tableLayoutPanel8.TabIndex = 1;
+ //
+ // label37
+ //
+ this.label37.Anchor = System.Windows.Forms.AnchorStyles.Left;
+ this.label37.AutoSize = true;
+ this.label37.Location = new System.Drawing.Point(3, 3);
+ this.label37.Name = "label37";
+ this.label37.Size = new System.Drawing.Size(89, 13);
+ this.label37.TabIndex = 1;
+ this.label37.Text = "Context Switches";
+ //
+ // label38
+ //
+ this.label38.Anchor = System.Windows.Forms.AnchorStyles.Left;
+ this.label38.AutoSize = true;
+ this.label38.Location = new System.Drawing.Point(3, 41);
+ this.label38.Name = "label38";
+ this.label38.Size = new System.Drawing.Size(66, 13);
+ this.label38.TabIndex = 1;
+ this.label38.Text = "System Calls";
+ //
+ // labelCPUContextSwitches
+ //
+ this.labelCPUContextSwitches.Anchor = System.Windows.Forms.AnchorStyles.Right;
+ this.labelCPUContextSwitches.AutoSize = true;
+ this.labelCPUContextSwitches.Location = new System.Drawing.Point(153, 3);
+ this.labelCPUContextSwitches.Name = "labelCPUContextSwitches";
+ this.labelCPUContextSwitches.Size = new System.Drawing.Size(33, 13);
+ this.labelCPUContextSwitches.TabIndex = 1;
+ this.labelCPUContextSwitches.Text = "value";
+ //
+ // labelCPUSystemCalls
+ //
+ this.labelCPUSystemCalls.Anchor = System.Windows.Forms.AnchorStyles.Right;
+ this.labelCPUSystemCalls.AutoSize = true;
+ this.labelCPUSystemCalls.Location = new System.Drawing.Point(153, 41);
+ this.labelCPUSystemCalls.Name = "labelCPUSystemCalls";
+ this.labelCPUSystemCalls.Size = new System.Drawing.Size(33, 13);
+ this.labelCPUSystemCalls.TabIndex = 1;
+ this.labelCPUSystemCalls.Text = "value";
+ //
+ // label41
+ //
+ this.label41.Anchor = System.Windows.Forms.AnchorStyles.Left;
+ this.label41.AutoSize = true;
+ this.label41.Location = new System.Drawing.Point(3, 22);
+ this.label41.Name = "label41";
+ this.label41.Size = new System.Drawing.Size(51, 13);
+ this.label41.TabIndex = 1;
+ this.label41.Text = "Interrupts";
+ //
+ // labelCPUInterrupts
+ //
+ this.labelCPUInterrupts.Anchor = System.Windows.Forms.AnchorStyles.Right;
+ this.labelCPUInterrupts.AutoSize = true;
+ this.labelCPUInterrupts.Location = new System.Drawing.Point(153, 22);
+ this.labelCPUInterrupts.Name = "labelCPUInterrupts";
+ this.labelCPUInterrupts.Size = new System.Drawing.Size(33, 13);
+ this.labelCPUInterrupts.TabIndex = 1;
+ this.labelCPUInterrupts.Text = "value";
//
// SysInfoWindow
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(736, 549);
+ this.ClientSize = new System.Drawing.Size(842, 509);
+ this.Controls.Add(this.flowInfo);
this.Controls.Add(this.tableGraphs);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "SysInfoWindow";
this.Text = "System Information";
- this.Load += new System.EventHandler(this.SysInfoWindow_Load);
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.SysInfoWindow_FormClosing);
this.gboxCPUPlotter.ResumeLayout(false);
this.tableGraphs.ResumeLayout(false);
this.tableGraphs.PerformLayout();
this.groupBox1.ResumeLayout(false);
this.groupBox2.ResumeLayout(false);
+ this.flowInfo.ResumeLayout(false);
+ this.groupBox3.ResumeLayout(false);
+ this.tableLayoutPanel1.ResumeLayout(false);
+ this.tableLayoutPanel1.PerformLayout();
+ this.groupBox4.ResumeLayout(false);
+ this.tableLayoutPanel2.ResumeLayout(false);
+ this.tableLayoutPanel2.PerformLayout();
+ this.groupBox5.ResumeLayout(false);
+ this.tableLayoutPanel3.ResumeLayout(false);
+ this.tableLayoutPanel3.PerformLayout();
+ this.groupBox6.ResumeLayout(false);
+ this.tableLayoutPanel4.ResumeLayout(false);
+ this.tableLayoutPanel4.PerformLayout();
+ this.groupBox7.ResumeLayout(false);
+ this.tableLayoutPanel5.ResumeLayout(false);
+ this.tableLayoutPanel5.PerformLayout();
+ this.groupBox8.ResumeLayout(false);
+ this.tableLayoutPanel6.ResumeLayout(false);
+ this.tableLayoutPanel6.PerformLayout();
+ this.groupBox9.ResumeLayout(false);
+ this.tableLayoutPanel7.ResumeLayout(false);
+ this.tableLayoutPanel7.PerformLayout();
+ this.groupBox10.ResumeLayout(false);
+ this.tableLayoutPanel8.ResumeLayout(false);
+ this.tableLayoutPanel8.PerformLayout();
this.ResumeLayout(false);
}
@@ -217,5 +1323,90 @@
private ProcessHacker.Components.Plotter plotterIO;
private System.Windows.Forms.GroupBox groupBox1;
private ProcessHacker.Components.Plotter plotterMemory;
+ private System.Windows.Forms.FlowLayoutPanel flowInfo;
+ private System.Windows.Forms.GroupBox groupBox3;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
+ private System.Windows.Forms.Label label6;
+ private System.Windows.Forms.Label label8;
+ private System.Windows.Forms.Label label9;
+ private System.Windows.Forms.Label labelTotalsProcesses;
+ private System.Windows.Forms.Label labelTotalsThreads;
+ private System.Windows.Forms.Label labelTotalsHandles;
+ private System.Windows.Forms.GroupBox groupBox4;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.Label label3;
+ private System.Windows.Forms.Label labelCCC;
+ private System.Windows.Forms.Label labelCCP;
+ private System.Windows.Forms.Label labelCCL;
+ private System.Windows.Forms.GroupBox groupBox5;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3;
+ private System.Windows.Forms.Label label4;
+ private System.Windows.Forms.Label label7;
+ private System.Windows.Forms.Label labelPMC;
+ private System.Windows.Forms.Label labelPMT;
+ private System.Windows.Forms.GroupBox groupBox6;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel4;
+ private System.Windows.Forms.Label label5;
+ private System.Windows.Forms.Label label10;
+ private System.Windows.Forms.Label labelCacheCurrent;
+ private System.Windows.Forms.Label labelCachePeak;
+ private System.Windows.Forms.Label label15;
+ private System.Windows.Forms.Label labelCacheMaximum;
+ private System.Windows.Forms.Label label13;
+ private System.Windows.Forms.Label labelCacheMinimum;
+ private System.Windows.Forms.GroupBox groupBox7;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel5;
+ private System.Windows.Forms.Label label11;
+ private System.Windows.Forms.Label labelKPNPU;
+ private System.Windows.Forms.Label label14;
+ private System.Windows.Forms.Label labelKPPF;
+ private System.Windows.Forms.Label label17;
+ private System.Windows.Forms.Label label18;
+ private System.Windows.Forms.Label labelKPPPU;
+ private System.Windows.Forms.Label labelKPPA;
+ private System.Windows.Forms.Label label23;
+ private System.Windows.Forms.Label labelKPNPF;
+ private System.Windows.Forms.Label label21;
+ private System.Windows.Forms.Label labelKPNPA;
+ private System.Windows.Forms.Label label12;
+ private System.Windows.Forms.Label labelKPPVU;
+ private System.Windows.Forms.GroupBox groupBox8;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel6;
+ private System.Windows.Forms.Label label20;
+ private System.Windows.Forms.Label labelPFCache;
+ private System.Windows.Forms.Label label24;
+ private System.Windows.Forms.Label label25;
+ private System.Windows.Forms.Label labelPFDZ;
+ private System.Windows.Forms.Label label27;
+ private System.Windows.Forms.Label label28;
+ private System.Windows.Forms.Label labelPFTotal;
+ private System.Windows.Forms.Label labelPFTrans;
+ private System.Windows.Forms.Label label31;
+ private System.Windows.Forms.Label labelPFCOW;
+ private System.Windows.Forms.Label labelPFCacheTrans;
+ private System.Windows.Forms.GroupBox groupBox9;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel7;
+ private System.Windows.Forms.Label label16;
+ private System.Windows.Forms.Label labelIOOB;
+ private System.Windows.Forms.Label label22;
+ private System.Windows.Forms.Label label26;
+ private System.Windows.Forms.Label labelIOO;
+ private System.Windows.Forms.Label label30;
+ private System.Windows.Forms.Label label32;
+ private System.Windows.Forms.Label labelIOR;
+ private System.Windows.Forms.Label labelIOW;
+ private System.Windows.Forms.Label label35;
+ private System.Windows.Forms.Label labelIORB;
+ private System.Windows.Forms.Label labelIOWB;
+ private System.Windows.Forms.GroupBox groupBox10;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel8;
+ private System.Windows.Forms.Label label37;
+ private System.Windows.Forms.Label label38;
+ private System.Windows.Forms.Label labelCPUContextSwitches;
+ private System.Windows.Forms.Label labelCPUSystemCalls;
+ private System.Windows.Forms.Label label41;
+ private System.Windows.Forms.Label labelCPUInterrupts;
}
}
\ No newline at end of file
diff --git a/trunk/ProcessHacker/Forms/SysInfoWindow.cs b/trunk/ProcessHacker/Forms/SysInfoWindow.cs
index 3308fdf9e..0af916c80 100644
--- a/trunk/ProcessHacker/Forms/SysInfoWindow.cs
+++ b/trunk/ProcessHacker/Forms/SysInfoWindow.cs
@@ -32,6 +32,7 @@ namespace ProcessHacker
{
private Components.Plotter[] _cpuPlotters;
private int _noOfCPUs = Program.HackerWindow.ProcessProvider.System.NumberOfProcessors;
+ private int _pages = Program.HackerWindow.ProcessProvider.System.NumberOfPhysicalPages;
private int _pageSize = Program.HackerWindow.ProcessProvider.System.PageSize;
private DeltaManager _deltaManager = new DeltaManager(new Int64Subtractor());
private int _runCount = 0;
@@ -40,9 +41,8 @@ namespace ProcessHacker
{
InitializeComponent();
- plotterCPU.UseSecondLine = true;
-
- // intializse delta manager
+ // intialize delta manager
+ _deltaManager.Add("clock", (long)Win32.GetTickCount() * 10000);
_deltaManager.Add("cpu_kernel", 0);
_deltaManager.Add("cpu_user", 0);
_deltaManager.Add("cpu_other", 0);
@@ -62,6 +62,7 @@ namespace ProcessHacker
tableCPUs.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 1.0f / _noOfCPUs));
_cpuPlotters[i] = new ProcessHacker.Components.Plotter();
_cpuPlotters[i].BackColor = Color.Black;
+ _cpuPlotters[i].Dock = DockStyle.Fill;
_cpuPlotters[i].UseSecondLine = true;
tableCPUs.Controls.Add(_cpuPlotters[i], i, 0);
@@ -69,14 +70,17 @@ namespace ProcessHacker
_deltaManager.Add("cpu_" + i.ToString() + "_user", 0);
_deltaManager.Add("cpu_" + i.ToString() + "_other", 0);
}
+
+ tableCPUs.Visible = true;
+ tableCPUs.Visible = false;
+ checkShowOneGraphPerCPU.Checked = Properties.Settings.Default.ShowOneGraphPerCPU;
}
- private void SysInfoWindow_Load(object sender, EventArgs e)
+ public void Start()
{
_runCount = 0;
- checkShowOneGraphPerCPU.Checked = Properties.Settings.Default.ShowOneGraphPerCPU;
Program.HackerWindow.ProcessProvider.PerformanceEnabled = true;
- Program.HackerWindow.ProcessProvider.Updated +=
+ Program.HackerWindow.ProcessProvider.Updated +=
new ProcessSystemProvider.ProviderUpdateOnce(ProcessProvider_Updated);
}
@@ -91,7 +95,22 @@ namespace ProcessHacker
this.Hide();
}
- private void UpdateInfo()
+ private void UpdateDeltas()
+ {
+ Win32.SYSTEM_PERFORMANCE_INFORMATION perfInfo = Program.HackerWindow.ProcessProvider.Performance;
+
+ _deltaManager.Update("cpu_kernel", Program.HackerWindow.ProcessProvider.ProcessorPerf.KernelTime);
+ _deltaManager.Update("cpu_user", Program.HackerWindow.ProcessProvider.ProcessorPerf.UserTime);
+ _deltaManager.Update("cpu_other", Program.HackerWindow.ProcessProvider.ProcessorPerf.IdleTime +
+ Program.HackerWindow.ProcessProvider.ProcessorPerf.DpcTime +
+ Program.HackerWindow.ProcessProvider.ProcessorPerf.InterruptTime);
+ _deltaManager.Update("contextswitches", perfInfo.ContextSwitches);
+ _deltaManager.Update("io_r", perfInfo.IoReadTransferCount);
+ _deltaManager.Update("io_w", perfInfo.IoWriteTransferCount);
+ _deltaManager.Update("io_o", perfInfo.IoOtherTransferCount);
+ }
+
+ private void UpdateGraphs()
{
Win32.SYSTEM_PERFORMANCE_INFORMATION perfInfo = Program.HackerWindow.ProcessProvider.Performance;
@@ -102,17 +121,7 @@ namespace ProcessHacker
plotterMemory.LineColor1 = Properties.Settings.Default.PlotterMemoryPrivateColor;
plotterMemory.LineColor2 = Properties.Settings.Default.PlotterMemoryWSColor;
- _deltaManager.Update("cpu_kernel", Program.HackerWindow.ProcessProvider.ProcessorPerf.KernelTime);
- _deltaManager.Update("cpu_user", Program.HackerWindow.ProcessProvider.ProcessorPerf.UserTime);
- _deltaManager.Update("cpu_other", Program.HackerWindow.ProcessProvider.ProcessorPerf.IdleTime +
- Program.HackerWindow.ProcessProvider.ProcessorPerf.DpcTime +
- Program.HackerWindow.ProcessProvider.ProcessorPerf.InterruptTime);
- _deltaManager.Update("contextswitches", perfInfo.ContextSwitches);
- _runCount++;
-
- if (_runCount < 1)
- return;
-
+ // update the CPU graph
long sysKernel = _deltaManager.GetDelta("cpu_kernel");
long sysUser = _deltaManager.GetDelta("cpu_user");
long sysOther = _deltaManager.GetDelta("cpu_other");
@@ -124,6 +133,7 @@ namespace ProcessHacker
"% (K: " + (kernelUsage * 100).ToString("F2") +
"%, U: " + (userUsage * 100).ToString("F2") + "%)";
+ // update the individual CPU graphs
for (int i = 0; i < _noOfCPUs; i++)
{
_cpuPlotters[i].LineColor1 = Properties.Settings.Default.PlotterCPUKernelColor;
@@ -149,11 +159,97 @@ namespace ProcessHacker
"% (K: " + (cpuKernelUsage * 100).ToString("F2") +
"%, U: " + (cpuUserUsage * 100).ToString("F2") + "%)";
}
+
+ // this hack is needed for some reason
+ if (_runCount < 4)
+ {
+ _deltaManager.SetDelta("io_r", 0);
+ _deltaManager.SetDelta("io_w", 0);
+ _deltaManager.SetDelta("io_o", 0);
+ }
+
+ // update the I/O graph
+ long ioR = _deltaManager.GetDelta("io_r");
+ long ioW = _deltaManager.GetDelta("io_w");
+ long ioO = _deltaManager.GetDelta("io_o");
+ plotterIO.Add(ioR + ioO, ioW);
+ plotterIO.Text = "R+O: " + Misc.GetNiceSizeName(ioR + ioO) +
+ ", W: " + Misc.GetNiceSizeName(ioW);
+
+ // update the memory graph
+ long commitSize = perfInfo.CommittedPages * _pageSize;
+ long physMemoryUsage = (_pages - perfInfo.AvailablePages) * _pageSize;
+ plotterMemory.Add(commitSize, physMemoryUsage);
+ plotterMemory.Text = "Commit: " + Misc.GetNiceSizeName(commitSize) +
+ ", Phys. Mem: " + Misc.GetNiceSizeName(physMemoryUsage);
+
+ _runCount++;
+ }
+
+ private void UpdateInfo()
+ {
+ Win32.SYSTEM_PERFORMANCE_INFORMATION perfInfo = Program.HackerWindow.ProcessProvider.Performance;
+ Win32.PERFORMANCE_INFORMATION info = new Win32.PERFORMANCE_INFORMATION();
+
+ Win32.GetPerformanceInfo(ref info, System.Runtime.InteropServices.Marshal.SizeOf(info));
+
+ Win32.SYSTEM_CACHE_INFORMATION cacheInfo = new Win32.SYSTEM_CACHE_INFORMATION();
+ int retLen;
+
+ Win32.ZwQuerySystemInformation(Win32.SYSTEM_INFORMATION_CLASS.SystemCacheInformation,
+ ref cacheInfo, System.Runtime.InteropServices.Marshal.SizeOf(cacheInfo), out retLen);
+
+ labelTotalsProcesses.Text = info.ProcessCount.ToString("N0");
+ labelTotalsThreads.Text = info.ThreadCount.ToString("N0");
+ labelTotalsHandles.Text = info.HandlesCount.ToString("N0");
+
+ labelCCC.Text = Misc.GetNiceSizeName(perfInfo.CommittedPages * _pageSize);
+ labelCCP.Text = Misc.GetNiceSizeName(perfInfo.PeakCommitment * _pageSize);
+ labelCCL.Text = Misc.GetNiceSizeName(perfInfo.CommitLimit * _pageSize);
+
+ labelPMC.Text = Misc.GetNiceSizeName((_pages - perfInfo.AvailablePages) * _pageSize);
+ labelPMT.Text = Misc.GetNiceSizeName(_pages * _pageSize);
+
+ labelCacheCurrent.Text = Misc.GetNiceSizeName(cacheInfo.SystemCacheWsSize);
+ labelCachePeak.Text = Misc.GetNiceSizeName(cacheInfo.SystemCacheWsPeakSize);
+ labelCacheMinimum.Text = Misc.GetNiceSizeName(cacheInfo.SystemCacheWsMinimum * _pageSize);
+ labelCacheMaximum.Text = Misc.GetNiceSizeName(cacheInfo.SystemCacheWsMaximum * _pageSize);
+
+ labelKPPPU.Text = Misc.GetNiceSizeName(perfInfo.PagedPoolPages * _pageSize);
+ labelKPPVU.Text = Misc.GetNiceSizeName(perfInfo.PagedPoolUsage * _pageSize);
+ labelKPPA.Text = perfInfo.PagedPoolAllocs.ToString("N0");
+ labelKPPF.Text = perfInfo.PagedPoolFrees.ToString("N0");
+ labelKPNPU.Text = Misc.GetNiceSizeName(perfInfo.NonPagedPoolUsage * _pageSize);
+ labelKPNPA.Text = perfInfo.NonPagedPoolAllocs.ToString("N0");
+ labelKPNPF.Text = perfInfo.NonPagedPoolFrees.ToString("N0");
+
+ labelPFTotal.Text = perfInfo.PageFaults.ToString("N0");
+ labelPFCOW.Text = perfInfo.CopyOnWriteFaults.ToString("N0");
+ labelPFTrans.Text = perfInfo.TransitionFaults.ToString("N0");
+ labelPFCacheTrans.Text = perfInfo.CacheTransitionFaults.ToString("N0");
+ labelPFDZ.Text = perfInfo.CacheTransitionFaults.ToString("N0");
+ labelPFCache.Text = cacheInfo.SystemCacheWsFaults.ToString("N0");
+
+ labelIOR.Text = perfInfo.IoReadOperationCount.ToString("N0");
+ labelIORB.Text = Misc.GetNiceSizeName(perfInfo.IoReadTransferCount);
+ labelIOW.Text = perfInfo.IoWriteOperationCount.ToString("N0");
+ labelIOWB.Text = Misc.GetNiceSizeName(perfInfo.IoWriteTransferCount);
+ labelIOO.Text = perfInfo.IoOtherOperationCount.ToString("N0");
+ labelIOOB.Text = Misc.GetNiceSizeName(perfInfo.IoOtherTransferCount);
+
+ labelCPUContextSwitches.Text = perfInfo.ContextSwitches.ToString("N0");
+ labelCPUInterrupts.Text = Program.HackerWindow.ProcessProvider.ProcessorPerf.InterruptCount.ToString("N0");
+ labelCPUSystemCalls.Text = perfInfo.SystemCalls.ToString("N0");
}
private void ProcessProvider_Updated()
{
- this.BeginInvoke(new MethodInvoker(this.UpdateInfo));
+ this.BeginInvoke(new MethodInvoker(delegate
+ {
+ this.UpdateDeltas();
+ this.UpdateGraphs();
+ this.UpdateInfo();
+ }));
}
private void checkShowOneGraphPerCPU_CheckedChanged(object sender, EventArgs e)
diff --git a/trunk/ProcessHacker/Misc/DeltaManager.cs b/trunk/ProcessHacker/Misc/DeltaManager.cs
index 1df3f2674..4c9178d6c 100644
--- a/trunk/ProcessHacker/Misc/DeltaManager.cs
+++ b/trunk/ProcessHacker/Misc/DeltaManager.cs
@@ -95,6 +95,11 @@ namespace ProcessHacker
_deltas.Add(key, initialValue);
}
+ public void SetDelta(TKey key, TValue value)
+ {
+ _deltas[key] = value;
+ }
+
public TValue Update(TKey key, TValue value)
{
_deltas[key] = _subtractor.Subtract(value, _values[key]);
diff --git a/trunk/ProcessHacker/Misc/Misc.cs b/trunk/ProcessHacker/Misc/Misc.cs
index 256506896..485aaac00 100644
--- a/trunk/ProcessHacker/Misc/Misc.cs
+++ b/trunk/ProcessHacker/Misc/Misc.cs
@@ -32,6 +32,8 @@ namespace ProcessHacker
{
#region Constants
+ public static string[] SizeUnitNames = { "B", "kB", "MB", "GB", "TB", "PB", "EB" };
+
public static string[] DangerousNames = { "csrss.exe", "dwm.exe", "lsass.exe", "lsm.exe", "services.exe",
"smss.exe", "wininit.exe", "winlogon.exe" };
@@ -188,17 +190,7 @@ namespace ProcessHacker
///
public static string GetNiceSizeName(long size)
{
- string[] names = { "B", "kB", "MB", "GB", "TB", "PB", "EB" };
- int i = 0;
- decimal s = (decimal)size;
-
- while (s > 1024 && i < names.Length)
- {
- s /= 1024;
- i++;
- }
-
- return String.Format("{0:f2}", s) + " " + names[i];
+ return GetNiceSizeName((ulong)size);
}
///
@@ -208,17 +200,16 @@ namespace ProcessHacker
///
public static string GetNiceSizeName(ulong size)
{
- string[] names = { "B", "kB", "MB", "GB", "TB", "PB", "EB" };
int i = 0;
decimal s = (decimal)size;
- while (s > 1024 && i < names.Length)
+ while (s > 1024 && i < SizeUnitNames.Length && i < Properties.Settings.Default.UnitSpecifier)
{
s /= 1024;
i++;
}
- return String.Format("{0:f2}", s) + " " + names[i];
+ return String.Format("{0:f2}", s) + " " + SizeUnitNames[i];
}
///
diff --git a/trunk/ProcessHacker/Properties/Settings.Designer.cs b/trunk/ProcessHacker/Properties/Settings.Designer.cs
index eed51b0e8..3e2faa238 100644
--- a/trunk/ProcessHacker/Properties/Settings.Designer.cs
+++ b/trunk/ProcessHacker/Properties/Settings.Designer.cs
@@ -826,5 +826,17 @@ namespace ProcessHacker.Properties {
this["ShowOneGraphPerCPU"] = value;
}
}
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("6")]
+ public int UnitSpecifier {
+ get {
+ return ((int)(this["UnitSpecifier"]));
+ }
+ set {
+ this["UnitSpecifier"] = value;
+ }
+ }
}
}
diff --git a/trunk/ProcessHacker/Properties/Settings.settings b/trunk/ProcessHacker/Properties/Settings.settings
index 2bca13c60..27dcd0939 100644
--- a/trunk/ProcessHacker/Properties/Settings.settings
+++ b/trunk/ProcessHacker/Properties/Settings.settings
@@ -203,5 +203,8 @@
False
+
+ 6
+
\ No newline at end of file
diff --git a/trunk/ProcessHacker/Providers/ProcessSystemProvider.cs b/trunk/ProcessHacker/Providers/ProcessSystemProvider.cs
index 0b3688aa6..f7bba0e26 100644
--- a/trunk/ProcessHacker/Providers/ProcessSystemProvider.cs
+++ b/trunk/ProcessHacker/Providers/ProcessSystemProvider.cs
@@ -98,31 +98,33 @@ namespace ProcessHacker
Win32.ZwQuerySystemInformation(Win32.SYSTEM_INFORMATION_CLASS.SystemProcessorTimes,
data, data.Size, out retLen);
- var newAverages = new Win32.SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION();
+ var newSums = new Win32.SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION();
+ // Thanks to:
+ // http://www.netperf.org/svn/netperf2/trunk/src/netcpu_ntperf.c
+ // for the critical information:
+ // "KernelTime needs to be fixed-up; it includes both idle & true kernel time".
+ // This is why I love free software.
for (int i = 0; i < this.ProcessorPerfArray.Length; i++)
{
- this.ProcessorPerfArray[i] = data.ReadStruct(
- i);
- newAverages.DpcTime += this.ProcessorPerfArray[i].DpcTime
- / this.ProcessorPerfArray.Length;
- newAverages.IdleTime += this.ProcessorPerfArray[i].IdleTime
- / this.ProcessorPerfArray.Length;
- newAverages.InterruptCount += this.ProcessorPerfArray[i].InterruptCount
- / this.ProcessorPerfArray.Length;
- newAverages.InterruptTime += this.ProcessorPerfArray[i].InterruptTime
- / this.ProcessorPerfArray.Length;
- newAverages.KernelTime += this.ProcessorPerfArray[i].KernelTime
- / this.ProcessorPerfArray.Length;
- newAverages.UserTime += this.ProcessorPerfArray[i].UserTime
- / this.ProcessorPerfArray.Length;
+ this.ProcessorPerfArray[i] =
+ data.ReadStruct(i);
+
+ this.ProcessorPerfArray[i].KernelTime -= this.ProcessorPerfArray[i].IdleTime +
+ this.ProcessorPerfArray[i].DpcTime + this.ProcessorPerfArray[i].InterruptTime;
+ newSums.DpcTime += this.ProcessorPerfArray[i].DpcTime;
+ newSums.IdleTime += this.ProcessorPerfArray[i].IdleTime;
+ newSums.InterruptCount += this.ProcessorPerfArray[i].InterruptCount;
+ newSums.InterruptTime += this.ProcessorPerfArray[i].InterruptTime;
+ newSums.KernelTime += this.ProcessorPerfArray[i].KernelTime;
+ newSums.UserTime += this.ProcessorPerfArray[i].UserTime;
}
- this.ProcessorPerf = newAverages;
+ this.ProcessorPerf = newSums;
}
}
- private void UpdatePerformance()
+ public void UpdatePerformance()
{
if (!this.PerformanceEnabled)
return;
@@ -160,7 +162,7 @@ namespace ProcessHacker
{
Win32.SystemProcess proc = procs[0];
- proc.Process.KernelTime = this.ProcessorPerf.IdleTime * this.System.NumberOfProcessors;
+ proc.Process.KernelTime = this.ProcessorPerf.IdleTime;
procs.Remove(0);
procs.Add(0, proc);
}
@@ -172,7 +174,7 @@ namespace ProcessHacker
{
ProcessId = -2,
InheritedFromProcessId = 0,
- KernelTime = this.ProcessorPerf.DpcTime * this.System.NumberOfProcessors,
+ KernelTime = this.ProcessorPerf.DpcTime,
SessionId = -1
}
});
@@ -184,7 +186,7 @@ namespace ProcessHacker
{
ProcessId = -3,
InheritedFromProcessId = 0,
- KernelTime = this.ProcessorPerf.InterruptTime * this.System.NumberOfProcessors,
+ KernelTime = this.ProcessorPerf.InterruptTime,
SessionId = -1
}
});
@@ -358,8 +360,7 @@ namespace ProcessHacker
try
{
- newitem.CPUUsage = (float)(newitem.LastTime - item.LastTime) * 100 / sysTime /
- this.System.NumberOfProcessors;
+ newitem.CPUUsage = (float)(newitem.LastTime - item.LastTime) * 100 / (sysTime + otherTime);
if (pid != 0 && newitem.CPUUsage > mostCPUUsage)
{
@@ -412,7 +413,7 @@ namespace ProcessHacker
}
if (thisSysTime != 0)
- this.CurrentCPUUsage = (float)(sysTime - otherTime) / sysTime;
+ this.CurrentCPUUsage = (float)sysTime / (sysTime + otherTime);
Dictionary = newdictionary;
diff --git a/trunk/ProcessHacker/Structs/StructParser.cs b/trunk/ProcessHacker/Structs/StructParser.cs
index c328a4fff..54b36741b 100644
--- a/trunk/ProcessHacker/Structs/StructParser.cs
+++ b/trunk/ProcessHacker/Structs/StructParser.cs
@@ -99,6 +99,12 @@ namespace ProcessHacker.Structs
if (_eatResult || includeFile == "")
throw new ParserException(_fileName, _lineNumber, "String expected (file name)");
+ _eatResult = EatWhitespace(text, ref i);
+ string endSemicolon = EatSymbol(text, ref i);
+
+ if (_eatResult || endSemicolon != ";")
+ throw new ParserException(_fileName, _lineNumber, "Expected ';'");
+
System.IO.FileInfo info = new System.IO.FileInfo(_fileName);
// if the filename contains ':', use the absolute path. otherwise, append it to the
diff --git a/trunk/ProcessHacker/Win32/API/Functions.cs b/trunk/ProcessHacker/Win32/API/Functions.cs
index 39acb1f08..d39091421 100644
--- a/trunk/ProcessHacker/Win32/API/Functions.cs
+++ b/trunk/ProcessHacker/Win32/API/Functions.cs
@@ -97,6 +97,9 @@ namespace ProcessHacker
#region Misc.
+ [DllImport("kernel32.dll")]
+ public static extern int GetTickCount();
+
#endregion
#region Processes
@@ -626,6 +629,10 @@ namespace ProcessHacker
public static extern uint ZwQuerySystemInformation(SYSTEM_INFORMATION_CLASS SystemInformationClass,
ref SYSTEM_BASIC_INFORMATION SystemInformation, int SystemInformationLength, out int ReturnLength);
+ [DllImport("ntdll.dll", SetLastError = true)]
+ public static extern uint ZwQuerySystemInformation(SYSTEM_INFORMATION_CLASS SystemInformationClass,
+ ref SYSTEM_CACHE_INFORMATION SystemInformation, int SystemInformationLength, out int ReturnLength);
+
[DllImport("ntdll.dll", SetLastError = true)]
public static extern uint ZwQuerySystemInformation(SYSTEM_INFORMATION_CLASS SystemInformationClass,
ref SYSTEM_PERFORMANCE_INFORMATION SystemInformation, int SystemInformationLength, out int ReturnLength);
diff --git a/trunk/ProcessHacker/Win32/API/Structs.cs b/trunk/ProcessHacker/Win32/API/Structs.cs
index 47adab062..0503fc1c7 100644
--- a/trunk/ProcessHacker/Win32/API/Structs.cs
+++ b/trunk/ProcessHacker/Win32/API/Structs.cs
@@ -346,7 +346,7 @@ namespace ProcessHacker
public int HandlesCount;
public int ProcessCount;
- public int ThreadCouont;
+ public int ThreadCount;
}
[StructLayout(LayoutKind.Sequential)]
@@ -623,6 +623,31 @@ namespace ProcessHacker
public byte NumberOfProcessors;
}
+ [StructLayout(LayoutKind.Sequential)]
+ public struct SYSTEM_CACHE_INFORMATION
+ {
+ ///
+ /// The size of the system working set, in bytes.
+ ///
+ public int SystemCacheWsSize;
+ public int SystemCacheWsPeakSize;
+ public int SystemCacheWsFaults;
+
+ ///
+ /// Measured in pages.
+ ///
+ public int SystemCacheWsMinimum;
+
+ ///
+ /// Measured in pages.
+ ///
+ public int SystemCacheWsMaximum;
+ public int TransitionSharedPages;
+ public int TransitionSharedPagesPeak;
+ public int Reserved1;
+ public int Reserved2;
+ }
+
[StructLayout(LayoutKind.Sequential)]
public struct SYSTEM_HANDLE_INFORMATION
{
diff --git a/trunk/ProcessHacker/app.config b/trunk/ProcessHacker/app.config
index fdd41e35f..4b70bfcb8 100644
--- a/trunk/ProcessHacker/app.config
+++ b/trunk/ProcessHacker/app.config
@@ -208,6 +208,9 @@
False
+
+ 6
+
\ No newline at end of file
diff --git a/trunk/ProcessHacker/structs.txt b/trunk/ProcessHacker/structs.txt
index e9d8d2087..33d77186c 100644
--- a/trunk/ProcessHacker/structs.txt
+++ b/trunk/ProcessHacker/structs.txt
@@ -5,7 +5,7 @@
* wj32.
*/
-include "base.txt"
+include "base.txt";
typedef int handle;
typedef int NTSTATUS; /* no enum support *yet* */
diff --git a/trunk/README.txt b/trunk/README.txt
index 1e1f111df..347315c53 100644
--- a/trunk/README.txt
+++ b/trunk/README.txt
@@ -34,5 +34,6 @@ Process Hacker is brought to you by the small Process Hacker team:
* wj32 (Project Manager)
* Dean (Developer)
* Plotter
+ * System Information Window
* Speed improvements in handle filter
* Paul Pacheco (Developer)
diff --git a/trunk/TreeViewAdv/Tree/Input/ResizeColumnState.cs b/trunk/TreeViewAdv/Tree/Input/ResizeColumnState.cs
index cc3585cd7..486ed3d39 100644
--- a/trunk/TreeViewAdv/Tree/Input/ResizeColumnState.cs
+++ b/trunk/TreeViewAdv/Tree/Input/ResizeColumnState.cs
@@ -46,6 +46,7 @@ namespace Aga.Controls.Tree
{
Column.Width = _initWidth + args.Location.X - _initLocation.X;
Tree.UpdateView();
+ Tree.Invalidate();
return true;
}
}