2 초마다 CPU 사용량을 모니터링하는 Windows Server 2008 상자에서 .NET 콘솔 응용 프로그램을 실행하고 싶습니다.Y 초 동안 X % 이상의 프로세스에서 CPU 스파이크 모니터링
단일 응용 프로그램이> 30 % CPU를 사용하는 경우 두 번 연속해서 기록해야합니다.
2 초마다 "CheckCpu"가 실행되지만 내 문제는 각 프로세스의 CPU 사용량을 어떻게 결정합니까? 그리고, 효율적으로 그래서 나는
이Dim lStrProcessCurrent As List(Of String)
Dim lStrProcessPrevious As List(Of String)
Private Sub CheckCpu()
Dim pcc As New PerformanceCounterCategory("Process")
'Clear "Current" run
lStrProcessCurrent = New List(Of String)
For Each instance As String In pcc.GetInstanceNames
Using cnt As PerformanceCounter = New PerformanceCounter("Process", "ID Process", instance, True)
Dim processName As String = cnt.InstanceName
' ????? HOW TO DETERMINE CPU USAGE ????
Dim cpuUsage As Long = 31
If cpuUsage >= 30 Then
'Was over 30% in Previous check
If lStrProcessPrevious.Contains(processName) Then
LogCpuSpike(processName)
End If
lStrProcessCurrent.Add(processName)
End If
End Using
Next
'Update "Previous" run
lStrProcessPrevious = lStrProcessCurrent
End Sub
질문에 downvoted가 있지만 의견이 없습니다. 제 질문이 명확하지 않았습니까? 네 번째 개발 노력을 기울이지 않았습니까? – adam
Windows 리소스 모니터는 코드를 전혀 작성하지 않고도이를 수행 할 수 있습니다. –
좋은 질문이라고 생각합니다. 어떤 사람들은 그들이 이해하지 못하는 질문을 즉시 downvote. – xpda