jay Posted February 27, 2006 Share Posted February 27, 2006 How much information can be obtained about a runing process using autoIT can it get the memory consumption in real time, and log it to a text file when the memory usage changes? Link to comment Share on other sites More sharing options...
ChrisL Posted February 27, 2006 Share Posted February 27, 2006 Generated by scriptomatic! Requires beta expandcollapse popup; Generated by AutoIt Scriptomatic $wbemFlagReturnImmediately = 0x10 $wbemFlagForwardOnly = 0x20 $colItems = "" $strComputer = "localhost" $Output="" $Output = $Output & "Computer: " & $strComputer & @CRLF $Output = $Output & "==========================================" & @CRLF $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2") $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Process", "WQL", _ $wbemFlagReturnImmediately + $wbemFlagForwardOnly) If IsObj($colItems) then For $objItem In $colItems $Output = $Output & "Caption: " & $objItem.Caption & @CRLF $Output = $Output & "CommandLine: " & $objItem.CommandLine & @CRLF $Output = $Output & "CreationClassName: " & $objItem.CreationClassName & @CRLF $Output = $Output & "CreationDate: " & WMIDateStringToDate($objItem.CreationDate) & @CRLF $Output = $Output & "CSCreationClassName: " & $objItem.CSCreationClassName & @CRLF $Output = $Output & "CSName: " & $objItem.CSName & @CRLF $Output = $Output & "Description: " & $objItem.Description & @CRLF $Output = $Output & "ExecutablePath: " & $objItem.ExecutablePath & @CRLF $Output = $Output & "ExecutionState: " & $objItem.ExecutionState & @CRLF $Output = $Output & "Handle: " & $objItem.Handle & @CRLF $Output = $Output & "HandleCount: " & $objItem.HandleCount & @CRLF $Output = $Output & "InstallDate: " & WMIDateStringToDate($objItem.InstallDate) & @CRLF $Output = $Output & "KernelModeTime: " & $objItem.KernelModeTime & @CRLF $Output = $Output & "MaximumWorkingSetSize: " & $objItem.MaximumWorkingSetSize & @CRLF $Output = $Output & "MinimumWorkingSetSize: " & $objItem.MinimumWorkingSetSize & @CRLF $Output = $Output & "Name: " & $objItem.Name & @CRLF $Output = $Output & "OSCreationClassName: " & $objItem.OSCreationClassName & @CRLF $Output = $Output & "OSName: " & $objItem.OSName & @CRLF $Output = $Output & "OtherOperationCount: " & $objItem.OtherOperationCount & @CRLF $Output = $Output & "OtherTransferCount: " & $objItem.OtherTransferCount & @CRLF $Output = $Output & "PageFaults: " & $objItem.PageFaults & @CRLF $Output = $Output & "PageFileUsage: " & $objItem.PageFileUsage & @CRLF $Output = $Output & "ParentProcessId: " & $objItem.ParentProcessId & @CRLF $Output = $Output & "PeakPageFileUsage: " & $objItem.PeakPageFileUsage & @CRLF $Output = $Output & "PeakVirtualSize: " & $objItem.PeakVirtualSize & @CRLF $Output = $Output & "PeakWorkingSetSize: " & $objItem.PeakWorkingSetSize & @CRLF $Output = $Output & "Priority: " & $objItem.Priority & @CRLF $Output = $Output & "PrivatePageCount: " & $objItem.PrivatePageCount & @CRLF $Output = $Output & "ProcessId: " & $objItem.ProcessId & @CRLF $Output = $Output & "QuotaNonPagedPoolUsage: " & $objItem.QuotaNonPagedPoolUsage & @CRLF $Output = $Output & "QuotaPagedPoolUsage: " & $objItem.QuotaPagedPoolUsage & @CRLF $Output = $Output & "QuotaPeakNonPagedPoolUsage: " & $objItem.QuotaPeakNonPagedPoolUsage & @CRLF $Output = $Output & "QuotaPeakPagedPoolUsage: " & $objItem.QuotaPeakPagedPoolUsage & @CRLF $Output = $Output & "ReadOperationCount: " & $objItem.ReadOperationCount & @CRLF $Output = $Output & "ReadTransferCount: " & $objItem.ReadTransferCount & @CRLF $Output = $Output & "SessionId: " & $objItem.SessionId & @CRLF $Output = $Output & "Status: " & $objItem.Status & @CRLF $Output = $Output & "TerminationDate: " & WMIDateStringToDate($objItem.TerminationDate) & @CRLF $Output = $Output & "ThreadCount: " & $objItem.ThreadCount & @CRLF $Output = $Output & "UserModeTime: " & $objItem.UserModeTime & @CRLF $Output = $Output & "VirtualSize: " & $objItem.VirtualSize & @CRLF $Output = $Output & "WindowsVersion: " & $objItem.WindowsVersion & @CRLF $Output = $Output & "WorkingSetSize: " & $objItem.WorkingSetSize & @CRLF $Output = $Output & "WriteOperationCount: " & $objItem.WriteOperationCount & @CRLF $Output = $Output & "WriteTransferCount: " & $objItem.WriteTransferCount & @CRLF if Msgbox(1,"WMI Output",$Output) = 2 then ExitLoop $Output="" Next Else Msgbox(0,"WMI Output","No WMI Objects Found for class: " & "Win32_Process" ) Endif Func WMIDateStringToDate($dtmDate) Return (StringMid($dtmDate, 5, 2) & "/" & _ StringMid($dtmDate, 7, 2) & "/" & StringLeft($dtmDate, 4) _ & " " & StringMid($dtmDate, 9, 2) & ":" & StringMid($dtmDate, 11, 2) & ":" & StringMid($dtmDate,13, 2)) EndFunc [u]Scripts[/u]Minimize gui to systray _ Fail safe source recoveryMsgbox UDF _ _procwatch() Stop your app from being closedLicensed/Trial software system _ Buffering Hotkeys_SQL.au3 ADODB.Connection _ Search 2d Arrays_SplashTextWithGraphicOn() _ Adjust Screen GammaTransparent Controls _ Eventlogs without the crap_GuiCtrlCreateFlash() _ Simple Interscript communication[u]Websites[/u]Curious Campers VW Hightops Lambert Plant Hire Link to comment Share on other sites More sharing options...
gcriaco Posted October 25, 2007 Share Posted October 25, 2007 I need to monitor the average of CPU and RAM percentage consuming for a given process in a given period of time. Anyone can help? Thanks and best regards Peppe Link to comment Share on other sites More sharing options...
weaponx Posted October 25, 2007 Share Posted October 25, 2007 Generated by scriptomatic! Requires beta Works fine in 3.2.8.1, don't need beta. Link to comment Share on other sites More sharing options...
Moderators SmOke_N Posted October 25, 2007 Moderators Share Posted October 25, 2007 Works fine in 3.2.8.1, don't need beta.That post you just quoted was 19 months ago ... back then, it did require beta Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer. Link to comment Share on other sites More sharing options...
Moderators SmOke_N Posted October 25, 2007 Moderators Share Posted October 25, 2007 (edited) I need to monitor the average of CPU and RAM percentage consuming for a given process in a given period of time.Anyone can help?Thanks and best regardsPeppehttp://www.autoitscript.com/forum/index.ph...st&p=136637Edit:Also: http://www.autoitscript.com/forum/index.ph...st&p=138811 Edited October 25, 2007 by SmOke_N Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer. Link to comment Share on other sites More sharing options...
weaponx Posted October 25, 2007 Share Posted October 25, 2007 (edited) Check this out. Using PsaltyDS' _ProcessListProperties() UDF:#409276#include <array.au3> ; for _ArrayDisplay() ;Poll Frequency in milliseconds Dim $PollFrequency = 1000 ;Number of times to execute poll Dim $PollCount = 5 ;Combined CPU usage Dim $totalCpu = 0 ;Combined RAM usage Dim $totalRam = 0 ;Process name $processName = "winamp.exe" For $X = 1 to $PollCount $avRET = _ProcessListProperties($processName) $totalCpu += $avRET[1][6] $totalRam += $avRET[1][7] Sleep($PollFrequency) TrayTip("Monitoring: " & $processName,"Time Elapsed: " & $X * ($PollFrequency / 1000) & " s" & @CRLF & "Time Remaining: " & ($PollCount * ($PollFrequency / 1000)) - ($X * ($PollFrequency / 1000)) & " s", 1) Next MsgBox(0,$processName,"Average CPU usage: " & $totalCpu / $PollCount & @CRLF & "Average RAM usage: " & ($totalRam / $PollCount) / 1024 / 1024 & " mb")EDIT: Added conversion for kilobytes to mb Edited October 25, 2007 by weaponx Link to comment Share on other sites More sharing options...
gcriaco Posted October 25, 2007 Share Posted October 25, 2007 Check this out. Using PsaltyDS' _ProcessListProperties() UDF: #409276 #include <array.au3> ; for _ArrayDisplay() ;Poll Frequency in milliseconds Dim $PollFrequency = 1000 ;Number of times to execute poll Dim $PollCount = 5 ;Combined CPU usage Dim $totalCpu = 0 ;Combined RAM usage Dim $totalRam = 0 ;Process name $processName = "winamp.exe" For $X = 1 to $PollCount $avRET = _ProcessListProperties($processName) $totalCpu += $avRET[1][6] $totalRam += $avRET[1][7] Sleep($PollFrequency) TrayTip("Monitoring: " & $processName,"Time Elapsed: " & $X * ($PollFrequency / 1000) & " s" & @CRLF & "Time Remaining: " & ($PollCount * ($PollFrequency / 1000)) - ($X * ($PollFrequency / 1000)) & " s", 1) Next MsgBox(0,$processName,"Average CPU usage: " & $totalCpu / $PollCount & @CRLF & "Average RAM usage: " & ($totalRam / $PollCount) / 1024 / 1024 & " mb") EDIT: Added conversion for kilobytes to mb It works very fine. Many thanks to you and to Smoke__n. Link to comment Share on other sites More sharing options...
weaponx Posted October 25, 2007 Share Posted October 25, 2007 That post you just quoted was 19 months ago ... back then, it did require beta I didn't even look at the dates. I just assumed it was newer since it was on the front page. Link to comment Share on other sites More sharing options...
weaponx Posted October 25, 2007 Share Posted October 25, 2007 (edited) He's going for distance, he's going for speed, he's all alone in a time of need...anywaysAs a personal challenge I kicked this up a notch. I created line graph of the cpu usage from the previous script I posted.http://www.autoitscript.com/forum/index.php?showtopic=55877And heres what it looks like: Edited February 15, 2008 by weaponx Link to comment Share on other sites More sharing options...
gcriaco Posted November 27, 2007 Share Posted November 27, 2007 Here is an improved version of the weaponx script that shows an inputbox with the process name to monitor (if not listed in the INI file), and writes an output log.Maybe it could be useful for some of you.expandcollapse popup#include "ProcessListProperties.au3" #include <File.au3> Local $sProcessName, $sIniRec, $iIniRec, $iPollFrequency, $iPollCount, $iDuration, $iTtotalCpu = 0, $iTtotalRam = 0, $iAverageCPU = 0, $iAverageRAM = 0 ;INI File - Section Settings $sIniRec = IniReadSection(@ScriptDir & "\ProcessMonitor.ini", "Settings") If @error Then MsgBox(4096, "", "Error occurred, probably no INI file") Exit EndIf For $iIniRec = 1 To $sIniRec[0][0] Select Case $sIniRec[$iIniRec][0] = "ProcessName" $sProcessName = $sIniRec[$iIniRec][1] Case $sIniRec[$iIniRec][0] = "PollFrequency" $iPollFrequency = $sIniRec[$iIniRec][1] Case $sIniRec[$iIniRec][0] = "Duration" $iDuration = $sIniRec[$iIniRec][1] EndSelect Next ;InputBox features: Title=Yes, Prompt=Yes, Default Text=No, Mandatory If $sProcessName = "" Then $sProcessName = InputBox("ProcessMonitor","Digitare il nome del processo da monitorare",""," M","-1","-1","-1","-1") If @Error <> 0 Then Exit EndIf _FileWriteLog(@ScriptDir & "\ProcessMonitor.log","Process name: " & $sProcessName & " - Polling Interval in seconds: " & $iPollFrequency & " - Monitor Period in seconds: " & $iDuration & @CRLF) $iPollCount = $iDuration / $iPollFrequency ;Polling Interval in Milliseconds $iPollFrequency *= 1000 For $X = 1 to $iPollCount $avRET = _ProcessListProperties($sProcessName) $iTtotalCpu += $avRET[1][6] $iTtotalRam += $avRET[1][7] Sleep($iPollFrequency) TrayTip("Monitoring: " & $sProcessName,"Time Elapsed: " & $X * ($iPollFrequency / 1000) & " s" & @CRLF & "Time Remaining: " & ($iPollCount * ($iPollFrequency / 1000)) - ($X * ($iPollFrequency / 1000)) & " s", 1) _FileWriteLog(@ScriptDir & "\ProcessMonitor.log","CPU: " & $avRET[1][6] & @TAB & "RAM: " & $avRET[1][7]) Next $iAverageCPU = Round($iTtotalCpu / $iPollCount, 1) $iAverageRAM = Round($iTtotalRam / $iPollCount, 1) _FileWriteLog(@ScriptDir & "\ProcessMonitor.log", "Average CPU usage: " & $iAverageCPU & @TAB & "Average RAM usage: " & $iAverageRAM) MsgBox(0,$sProcessName,"Average CPU usage: " & $iAverageCPU & @CRLF & "Average RAM usage: " & $iAverageRAM)ProcessMinitor.ini example[settings];Process Name (Optional)ProcessName=rtvscan.exe;Polling Interval in secondsPollFrequency=5;Monitor period in secondsDuration=3600 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now