EVAPerf Top vd ProbeActionModuleType

EVAPerf.Top.vd.ProbeActionModuleType (ProbeActionModuleType)

Element properties:

TypeProbeActionModuleType
IsolationAny
AccessibilityInternal
RunAsDefault
InputTypeSystem.BaseData
OutputTypeSystem.CommandOutput

Member Modules:

ID Module Type TypeId RunAs 
DS ProbeAction Microsoft.Windows.ScriptProbeAction Default

Source Code:

<ProbeActionModuleType ID="EVAPerf.Top.vd.ProbeActionModuleType" Accessibility="Internal" Batching="false" PassThrough="false">
<Configuration>
<xsd:element minOccurs="1" name="EvaPerfPath" type="xsd:string"/>
<xsd:element minOccurs="1" name="EvaName" type="xsd:string"/>
</Configuration>
<ModuleImplementation Isolation="Any">
<Composite>
<MemberModules>
<ProbeAction ID="DS" TypeID="MicrosoftWindowsLibrary6062780!Microsoft.Windows.ScriptProbeAction">
<ScriptName>EVAperf_Virtual_Disks_WL_Diagnostic.vbs</ScriptName>
<Arguments>5 $Config/EvaPerfPath$ $Config/EvaName$</Arguments>
<ScriptBody><Script><![CDATA[' Extract Top Five (Write Latency) Virtual Disk
'
'Time,ID,Read Hit Req/s,Read Hit MB/s,Read Hit Latency (ms),Read Miss Req/s,Read Miss MB/s,Read Miss Latency (ms),Write Req/s,Write MB/s,Write Latency (ms),Flush MB/s,Mirror MB/s,Prefetch MB/s,Group ID,DRM Group,Online To,Mirr,Wr Mode,Ctlr,Redundancy,NumberOf Presentations,Preferred Path,LUN,Node
'
SetLocale("en-us")
set args = WScript.Arguments
Set WshShell = WSCript.CreateObject("WScript.Shell")
CRLF = Chr(13) & Chr(10)
linenumber=0
value = 0
name = ""
TopN = args(0)
Evaperf_Path = args(1)
TargetEVA = " -sz " & args(2)

topfive = Array(Array("","","","",""),Array(0,0,0,0,0))

FileName = "C:\temp\EVAPERF_vd_top_diag.csv"

strCommand = "CMD /c " & Chr(34) & Evaperf_Path & "\evaperf.exe" & Chr(34) & " vd" & TargetEVA & " -csv > " & FileName

WshShell.Run strcommand,0,true

Set fso = CreateObject("Scripting.FileSystemObject")
Set oAPI = CreateObject("MOM.ScriptAPI")
Const ForReading = 1

If fso.FileExists(FileName) = 0 Then
wscript.echo "File not found."
wscript.quit
End If

Set oFile = fso.GetFile(FileName)

Set oStream = oFile.OpenAsTextStream(ForReading, TristateUseDefault)

Do While Not oStream.AtEndOfStream
sRecord=oStream.ReadLine
if linenumber <> 0 and sRecord <> "" Then
tmp = split(sRecord,",")
'WScript.Echo ":" & sRecord & ":"
Nametmp = tmp(23) & ":" & tmp(24)
If (Name <> Nametmp) and (Name <> "") Then
'WScript.Echo name & ":" & value
For i = 0 to (TopN - 1)
If Value > TopFive(1)(i) Then
tmpvalue = TopFive(1)(i)
tmpname = TopFive(0)(i)
TopFive(1)(i) = Value
TopFive(0)(i) = Name
Value = tmpvalue
Name = tmpname
End If
Next
value = 0
End If
Name = Nametmp
value = value + tmp(10)
End If
linenumber = linenumber+1
Loop
oStream.Close

For i = 0 to (TopN - 1)
If Value > TopFive(1)(i) Then
tmpvalue = TopFive(1)(i)
tmpname = TopFive(0)(i)
TopFive(1)(i) = Value
TopFive(0)(i) = Name
Value = tmpvalue
Name = tmpname
End If
Next


message = "Virtual Disks (Top5): Write Latency (ms)" & CRLF
message = message & "-----------------------------------" & CRLF
For i = 0 to (TopN - 1)
message = message & TopFive(0)(i) & " - " & TopFive(1)(i) & " ms" & CRLF
Next

wscript.echo message
logevent "Warning", "128", "Application", "vDisk_WriteLatency_Top", message


Function logevent( eventtype, id, log, source, description )

Dim strCommand
strCommand = "eventcreate /T " & eventtype & " /ID " & id & " /L " & log & " /SO " & source & " /D " & _
Chr(34) & description & Chr(34)
WshShell.Run strcommand



End Function
]]></Script></ScriptBody>
<TimeoutSeconds>60</TimeoutSeconds>
</ProbeAction>
</MemberModules>
<Composition>
<Node ID="DS"/>
</Composition>
</Composite>
</ModuleImplementation>
<OutputType>System!System.CommandOutput</OutputType>
<InputType>System!System.BaseData</InputType>
</ProbeActionModuleType>