[asp] wmi toegang met minder proc-use?

Pagina: 1
Acties:

  • bramseltje
  • Registratie: September 2001
  • Laatst online: 23-07 23:59
Na een hele poos klussen ben ik er nu eindelijk achter hoe ik de raw performance counters van het WMI om moet zetten naar een normale waarde.
Ik wilde namelijk een soort van DU metertje maken die via internet simpel uit is te lezen.
Het probleem is alleen dat wanneer je een paar refreshes achter elkaar doet er constant een behoorlijke processor load is. Het steeds opnieuw aanmaken van de toegang naar de teller kost blijkbaar behoorlijk wat reken kracht.

De code waarmee ik dit doe is de volgende (is een deeltje, maar wel bijna alles :D)
ASP:
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
32
33
34
35
36
37
38
39
Dim wbemServices
Set wbemServices = GetObject("winmgmts:\\SERVER\root\cimv2")

Dim objNets

Dim Up0(3)  'upload waarde 1
Dim Do0(3)  'download waarde 1
Dim Ti0(3)  'timestamp 1

Dim Up1(3)  'upload waarde 2
Dim Do1(3)  'download waarde 2
Dim Ti1(3)  'timestamp 2

Set objNets = wbemServices.InstancesOf("Win32_PerfRawData_Tcpip_NetworkInterface")

i = 0
For Each net in objNets
    Do0(i) = net.BytesReceivedPerSec
    Up0(i) = net.BytesSentPerSec
    Ti0(i) = net.Timestamp_PerfTime
    TB = net.Frequency_PerfTime
    i=i+1
Next

Set objNets = Nothing
'Een keer opnieuw aanmaken, omdat er geen Refresh methode is geimplementeerd in de raw counters :(
Set objNets = wbemServices.InstancesOf("Win32_PerfRawData_Tcpip_NetworkInterface")

i=0
For Each net in objNets
    Do1(i) = net.BytesReceivedPerSec
    Up1(i) = net.BytesSentPerSec
    Ti1(i) = net.Timestamp_PerfTime
    i=i+1
Next

Set objNets = Nothing

Set wbemServices = Nothing


Het is misschien niet echt netjes, en daarom zal het wel zoveel rekenkracht kosten, maar het is de enige manier waarop het mij gelukt is. :(

Ja, met coolmon en de XML output daarvan ook, maar daarvoor moet je dus ingelogd zijn, je kunt coolmon niet echt als service draaien dacht ik.
Ik wilde juist voorkomen dat er constant iemand ingelogd moet zijn op m'n server bakkie... :)

Dus mijn vraag na dit verhaal is: Weet iemand misschien een betere manier? Die hetzelfde effect heeft, maar dan zonder de behoorlijk impact op m'n toch al vrij langzame servertje :P

offtopic:
sorry voor het vernueken van de layout met m'n brakke source :P

[ Voor 11% gewijzigd door bramseltje op 06-03-2003 23:25 ]


  • bramseltje
  • Registratie: September 2001
  • Laatst online: 23-07 23:59
Jammer dat niemand lijkt te weten hoe dit eventueel zou kunnen. :'(

Verwijderd

Bramseltje schreef op 08 March 2003 @ 21:45:
Jammer dat niemand lijkt te weten hoe dit eventueel zou kunnen. :'(
Je kan altijd nog op microsoft.com kijken.