쥔장에겐 완전 사랑하는 사람이 있어요 ^-^♡


WMI로 CPU 사용량 수집하는 세가지 방법


1. 요건 실행 당시 CPU를 꽤나 많이 잡아 먹지만 그 당시의 CPU 사용량을 가장 정확히 나타낸다.

   (수집할 때 요거 때문에 사용되는 CPU 로드는 제외하고 수집한다.)

Set procset = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & "." & _ "\root\cimv2").InstancesOf ("Win32_Processor")

for each System in ProcSet
 Wscript.echo system.LoadPercentage
Next


2. 윈도우 2003 & XP 에서만 된다.(2000은 안 됨)
   순간을 잡아내는 정확도는 떨어지나...... 나름 쓸만하다.
   For 문을 사용해서 두번을 돌렸는데.. 그 이유인 즉슨...
   최초에 정보를 수집할 때 0 으로 나오더라.. 뷁 =ㅠ= 정확한 원인은 모르겠다 ㅡㅡ;;;;;  
   그 이후에는 정상적으로 수집한다.

Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & "." & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.Swbemrefresher")
Set objProcessor = objRefresher.AddEnum _
    (objWMIService, "Win32_PerfFormattedData_PerfOS_Processor").objectSet

objRefresher.Refresh

For i =1 TO 2
    For Each intProcessorUse in objProcessor
    Wscript.Echo intProcessorUse.PercentProcessorTime
    Next
    Wscript.Sleep 1000
    objRefresher.Refresh
Next


3. 윈도우 2000 버전을 위해서 제작된 것

윈도우 2003 & XP 에서는 지원되는 뭐.. 클래스라고 해야 하나..ㅡ_ㅡ;;
암튼... WMI에서 지원하는 기능이 딸려서 Win 2000 에서는 아래와 같이 정보를 수집해야 한다.

Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")

Set cpu_load1 = objWMIService.Get("Win32_PerfRawData_PerfOS_Processor.Name='_Total'")
CP1 = cpu_load1.PercentProcessorTime
CT1 = cpu_load1.TimeStamp_Sys100NS

WScript.Sleep 1000*3

Set cpu_load2 = objWMIService.get("Win32_PerfRawData_PerfOS_Processor.Name='_Total'")
CP2 = cpu_load2.PercentProcessorTime
CT2 = cpu_load2.TimeStamp_Sys100NS

CPU_Load = (1 - ((CP2 - CP1)/(CT2-CT1)))*100

WScript.Echo Round(CPU_Load,2)



어쨋거나 저쨋거나 CPU 로드를 정확하게 잡아 낼 수는 없을 듯 하다.
순간 순간 치고 올라가는걸 어떻게 다 잡아서 기록을 하오리까  =_=;;
뭐.. 다른 방법이 있기야 있겠지만.... 기록한다고 자원을 더 많이 사용하는거 같아서 Pass~
Windows 작업 관리자를 열 때 순간적으로 CPU가 팍! 하고 올라가는 걸 볼 수가 있다.
작업 관리자를 띄워 놓는 것 만으로도 CPU에 부하를 주는 것 같다.. 단지 추측 -_-;;

아무튼 위와 같이 일정 시간에 CPU 로드를 대충 잡아 낼 수는 있다.

* 이곳저곳에서 자료를 참조한거 같은데.. 꽤나 오래되서 기억이 안 난다 =ㅠ=;;;;

신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Keizwer Keiz

댓글을 달아주세요:: 네티켓은 기본, 스팸은 사절

  1. 2015.07.15 15:02 신고
    댓글 주소 수정/삭제 댓글
    ㅁㄴㅇㅇ
  2. 2015.07.15 15:02 신고
    댓글 주소 수정/삭제 댓글
    ㅁㄴㅇㅇ


카테고리

:: Keiz Story :: (349)
TechNical (197)
Another (145)
ENG, JPN Lang. (7)

Statistics Graph
Total : 508,577
Today : 17 Yesterday : 13

달력

«   2017/08   »
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

Google

글 보관함

0
hit counter