Testen Sie GetPerformanceInfo () . Es setzt Commit-Nummern zurück.
Wie wird "% Committed Bytes in use" in Perfmon berechnet?
Ich versuche, einen Speicherverlust auf einem Windows 7 Embedded Panel-PC aufzuspüren. Wenn Sie Perfmon verwenden, kann ich feststellen, dass "% Committed Bytes in use" stetig mit 0,77% pro Stunde wächst, wenn die betreffende App ausgeführt wird. Auf Win XP-Systemen (nicht eingebettet) mit denselben Bedingungen wächst es überhaupt nicht.
Ich bin neugierig zu wissen, wie diese Metrik berechnet wird, um der App meinen eigenen Überwachungs- und Protokollierungscode hinzuzufügen. Bei Verwendung des GlobalMemoryStatus-API-Aufrufs kann ich mehrere Zahlen zurückbekommen, aber keine Menge an Krämpfen, die ich mir vorstellen kann, gibt mir das gleiche% -Ergebnis wie bei Perfmon beim Überwachen des Leistungszählers "% zugesagte Bytes in Verwendung".
Wie kann ich diesen Parameter erhalten?
Aktualisieren
Beispielcode für Delphi folgt. Erstellen Sie einfach ein Formular, legen Sie ein Memo und einen Timer ab. Getestet unter Win XP.
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TPerformanceInformation = packed record cb : DWORD ; CommitTotal : integer; CommitLimit : integer ; CommitPeak : Cardinal ; PhysicalTotal : Cardinal ; PhysicalAvailable : Cardinal ; SystemCache : Cardinal ; KernelTotal : Cardinal ; KernelPaged : integer ; KernelNonpaged : Cardinal ; PageSize : Cardinal ; HandleCount : DWORD ; ProcessCount : DWORD ; ThreadCount : DWORD ; end ; TpPerformanceInformation = ^TPerformanceInformation ; type TForm1 = class(TForm) Timer1: TTimer; Memo1: TMemo; procedure Timer1Timer(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1 ; function GetPerformanceInfo ( pPerformanceInformation : TpPerformanceInformation ; cb : dword) : integer ; stdcall ; external 'psapi.dll' ; implementation {$R *.dfm} procedure TForm1.Timer1Timer(Sender: TObject); var Status : TMemoryStatus; PerformanceInfo : TPerformanceInformation ; begin Memo1.Clear ; Status.dwLength := sizeof(TMemoryStatus) ; GlobalMemoryStatus (Status) ; Memo1.Lines.Add (Format ('Total memory used (%%) : %u',[Status.dwMemoryLoad])) ; Memo1.Lines.Add (Format ('Physical memory used : %u',[(Status.dwTotalPhys - Status.dwAvailPhys)])) ; Memo1.Lines.Add (Format ('Physical memory left : %u',[Status.dwAvailPhys])) ; Memo1.Lines.Add (Format ('Total physical memory : %u',[Status.dwTotalPhys])) ; Memo1.Lines.Add (Format ('Total physical used (%%): %1.2f',[100.0 * (Status.dwTotalPhys - Status.dwAvailPhys) / Status.dwTotalPhys])) ; Memo1.Lines.Add (Format ('Total page file : %u',[Status.dwTotalPageFile])) ; Memo1.Lines.Add (Format ('Page file used : %u',[(Status.dwTotalPageFile - Status.dwAvailPageFile)])) ; Memo1.Lines.Add (Format ('Page file left : %u',[Status.dwAvailPageFile])) ; Memo1.Lines.Add (Format ('Page file used (%%) : %1.2f',[100.0 * (Status.dwTotalPageFile - Status.dwAvailPageFile) / Status.dwTotalPageFile])) ; if (GetPerformanceInfo (Addr (PerformanceInfo), Sizeof (TPerformanceInformation)) <> 0) then begin with PerformanceInfo do begin Memo1.Lines.Add (Format ('CommitTotal : %u',[CommitTotal])) ; Memo1.Lines.Add (Format ('CommitLimit : %u',[CommitLimit])) ; Memo1.Lines.Add (Format ('CommitPeak : %u',[CommitPeak])) ; Memo1.Lines.Add (Format ('PhysicalTotal : %u',[PhysicalTotal])) ; Memo1.Lines.Add (Format ('PhysicalAvailable: %u',[PhysicalAvailable])) ; Memo1.Lines.Add (Format ('SystemCache : %u',[SystemCache])) ; Memo1.Lines.Add (Format ('KernelTotal : %u',[KernelTotal])) ; Memo1.Lines.Add (Format ('KernelPaged : %u',[KernelPaged])) ; Memo1.Lines.Add (Format ('KernelNonpaged : %u',[KernelNonpaged])) ; Memo1.Lines.Add (Format ('PageSize : %u',[PageSize])) ; Memo1.Lines.Add (Format ('HandleCount : %u',[HandleCount])) ; Memo1.Lines.Add (Format ('ProcessCount : %u',[ProcessCount])) ; Memo1.Lines.Add (Format ('ThreadCount : %u',[ThreadCount])) ; end ; end ; end; end.
1 Antwort auf die Frage
Verwandte Probleme
-
2
Erinnert sich Windows 7 Home Premium an Netzwerkfreigaben-Passwörter?
-
4
Wie sperre ich rechtsbündige Symbolleisten in Windows 7, ohne dass sie schrecklich aussehen
-
4
Windows 7 "Aero Snap" -Funktion für Ubuntu GNOME
-
3
Meine zweite Festplatte ist in Windows 7 nicht sichtbar
-
6
Muss ich 3 RAM-DIMMs haben, um DDR3 verwenden zu können, oder sogar eine 3-Kanal-CPU betreiben könne...
-
7
Wie ersetze ich Notepad in Windows 7?
-
2
Wie werden Windows 7-Taskleistensymbole in zwei Reihen angeordnet?
-
1
Probleme beim Standby unter Windows 7
-
6
Wie steuern Sie die Windows 7-Snap-Funktion mit zwei Monitoren?
-
5
Warum läuft mein CPU-Fan, wenn Sie Videos oder virtuelle Maschinen ausführen?