Failure during analysis of Perfmon files

Dec 17, 2007 at 4:15 PM
I'm getting the following failure when trying to analyze different perfmon files using the latest PAL tool. Any ideas what I might be doing wrong?

SELECT QUANTIZE((PDH-CSV 4.0) (Central Standard Time)(360), 2879) AS Interval,
MIN(TO_REAL(\\DALAPPPOS4\LogicalDisk(_Total)\Avg. Disk sec/Write)) AS min, AV
G(TO_REAL(\\DALAPPPOS4\LogicalDisk(_Total)\Avg. Disk sec/Write)) AS avg, MAX(T
O_REAL(\\DALAPPPOS4\LogicalDisk(_Total)\Avg. Disk sec/Write)) AS max FROM C:\D
OCUME~1\hellm1\LOCALS~1\Temp\_FilteredPerfmonLog.csv GROUP BY Interval
C:\Program Files\PAL\PAL.vbs(2163, 25) Microsoft VBScript runtime error: Subscri
pt out of range: 'oAnalysis.Counters(...).Instances(...).MIN'


C:\Program Files\PAL>
Coordinator
Jan 3, 2008 at 11:42 PM
I believe the perfmon logs templates are producing NULL data values in the perfmon logs and eventually causing the data to be corrupted or NULL. I've added error handling in the latest release (v1.1.9) today that should fix this issue. If not, please let me know.

dhellman wrote:
I'm getting the following failure when trying to analyze different perfmon files using the latest PAL tool. Any ideas what I might be doing wrong?

SELECT QUANTIZE((PDH-CSV 4.0) (Central Standard Time)(360), 2879) AS Interval,
MIN(TO_REAL(\\DALAPPPOS4\LogicalDisk(_Total)\Avg. Disk sec/Write)) AS min, AV
G(TO_REAL(\\DALAPPPOS4\LogicalDisk(_Total)\Avg. Disk sec/Write)) AS avg, MAX(T
O_REAL(\\DALAPPPOS4\LogicalDisk(_Total)\Avg. Disk sec/Write)) AS max FROM C:\D
OCUME~1\hellm1\LOCALS~1\Temp\_FilteredPerfmonLog.csv GROUP BY Interval
C:\Program Files\PAL\PAL.vbs(2163, 25) Microsoft VBScript runtime error: Subscri
pt out of range: 'oAnalysis.Counters(...).Instances(...).MIN'


C:\Program Files\PAL>

Feb 22, 2008 at 9:49 AM
Hi All!

First of all PAL is an awesome tool, and I’m pretty grateful for that. I know about for 3 days and it’s a real time saver.

Unfortunately on one environment I’m getting QueryCounterInstanceData ERROR Description: Error parsing query: Log row too long when trying to analyze the logs.

Would you please advise what the problem can be? I can not open _FilteredPerfmonLog.csv completely, there are not enough rows in Excel. 

Thanks a lot!

With kindest Regards,

Ferenc Farkas MATYAS

])) AS max FROM C:\DOCUME~1\ADMINX~3\LOCALS~1\Temp\1\_FilteredPerfmonLog.csv GROUP BY Interval
QueryCounterInstanceData ERROR Number: -2147221020
QueryCounterInstanceData ERROR Description: Error parsing query: Log row too long
LogFile "C:\DOCUME~1\ADMINX~3\LOCALS~1\Temp\1\_FilteredPerfmonLog.csv", Row number 1 Unknown Error
SELECT QUANTIZE((PDH-CSV 4.0) (W. Europe Standard Time)(-60), AUTO) AS Interval, MIN(TO_REAL([\\SERVERNAME9016\Processor(3)\% Processor Time
])) AS min, AVG(TOREAL(\\SERVERNAME9016\Processor(3)\% Processor Time)) AS avg, MAX(TOREAL([\\SERVERNAME9016\Processor(3)\% Processor Time
])) AS max FROM C:\DOCUME~1\ADMINX~3\LOCALS~1\Temp\1\_FilteredPerfmonLog.csv GROUP BY Interval
QueryCounterInstanceData ERROR Number: -2147221020
QueryCounterInstanceData ERROR Description: Error parsing query: Log row too long
LogFile "C:\DOCUME~1\ADMINX~3\LOCALS~1\Temp\1\_FilteredPerfmonLog.csv", Row number 1 Unknown Error
SELECT QUANTIZE((PDH-CSV 4.0) (W. Europe Standard Time)(-60), AUTO) AS Interval, MIN(TO_REAL([\\SERVERNAME9016\Processor(_Total)\% Processor
Time])) AS min, AVG(TOREAL(\\SERVERNAME9016\Processor(_Total)\% Processor Time)) AS avg, MAX(TOREAL([\\SERVERNAME9016\Processor(_Total)\%
Processor Time])) AS max FROM C:\DOCUME~1\ADMINX~3\LOCALS~1\Temp\1\_FilteredPerfmonLog.csv GROUP BY Interval
QueryCounterInstanceData ERROR Number: -2147221020
QueryCounterInstanceData ERROR Description: Error parsing query: Log row too long
LogFile "C:\DOCUME~1\ADMINX~3\LOCALS~1\Temp\1\_FilteredPerfmonLog.csv", Row number 1 Unknown Error
C:\Documents and Settings\adminuser\My Documents\PAL\PAL.vbs(2094, 9) Microsoft VBScript runtime error: Type mismatch: 'UBound'


C:\Documents and Settings\adminuser\My Documents\PAL>CScript "C:\Documents and Settings\adminuser\My Documents\PAL\PAL.vbs" /LOG:"D:\PerfL
ogs\FMASERVERNAME91112008022019.csv" /THRESHOLDFILE:"C:\Documents and Settings\adminuser\My Documents\PAL\SystemOverview.xml" /INTERVAL:"A
UTO" /NumberOfProcessors:4 /ThreeGBSwitch:False /SixtyFourBit:False /TotalMemory:4 /KernelDumpOnCDrive:True
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

PAL.vbs v1.1.8

Executing: ReLog.exe "D:\PerfLogs\FMASERVERNAME91112008022019.csv" -q -y -o C:\DOCUME~1\ADMINX~3\LOCALS~1\Temp\1\_OriginalCounterList.txt

Input
----------------
File(s):
D:\PerfLogs\FMASERVERNAME91112008022019.csv (CSV)

Begin: 20.2.2008 19:14:15
End: 21.2.2008 17:47:16
Samples: 1354

The command completed successfully.

Waiting for C:\DOCUME~1\ADMINX~3\LOCALS~1\Temp\1\_OriginalCounterList.txt to be created...
Found C:\DOCUME~1\ADMINX~3\LOCALS~1\Temp\1\_OriginalCounterList.txt
Executing: ReLog.exe "D:\PerfLogs\FMASERVERNAME91112008022019.csv" -cf C:\DOCUME~1\ADMINX~3\LOCALS~1\Temp\1\_CountersToFilter.txt -f CSV -y
-o C:\DOCUME~1\ADMINX~3\LOCALS~1\Temp\1\_FilteredPerfmonLog.csv

Input
----------------
File(s):
D:\PerfLogs\FMASERVERNAME91112008022019.csv (CSV)

Begin: 20.2.2008 19:14:15
End: 21.2.2008 17:47:16
Samples: 1354

0.00%0.00%0.74%1.48%2.22%2.95%3.69%4.43%5.17%5.91%6.65%7.39%8.12%8.86%9.60%10.34%11.08%11.82%12.56%13.29%14.03%14.77%15.51%16.25%16.99%17.73%1
8.46%19.20%19.94%20.68%21.42%22.16%22.90%23.63%24.37%25.11%25.85%26.59%27.33%28.06%28.80%29.54%30.28%31.02%31.76%32.50%33.23%33.97%34.71%35.45
%36.19%36.93%37.67%38.40%39.14%39.88%40.62%41.36%42.10%42.84%43.57%44.31%45.05%45.79%46.53%47.27%48.01%48.74%49.48%50.22%50.96%51.70%52.44%53.
18%53.91%54.65%55.39%56.13%56.87%57.61%58.35%59.08%59.82%60.56%61.30%62.04%62.78%63.52%64.25%64.99%65.73%66.47%67.21%67.95%68.69%69.42%70.16%7
0.90%71.64%72.38%73.12%73.86%74.59%75.33%76.07%76.81%77.55%78.29%79.03%79.76%80.50%81.24%81.98%82.72%83.46%84.19%84.93%85.67%86.41%87.15%87.89
%88.63%89.36%90.10%90.84%91.58%92.32%93.06%93.80%94.53%95.27%96.01%96.75%97.49%98.23%98.97%99.70%100.00%

Output
----------------
File: C:\DOCUME~1\ADMINX~3\LOCALS~1\Temp\1\_FilteredPerfmonLog.csv

Begin: 20.2.2008 19:14:15
End: 21.2.2008 17:47:16
Samples: 1352

The command completed successfully.

Waiting for C:\DOCUME~1\ADMINX~3\LOCALS~1\Temp\1\_FilteredPerfmonLog.csv to be created...
Found C:\DOCUME~1\ADMINX~3\LOCALS~1\Temp\1\_FilteredPerfmonLog.csv
SELECT (PDH-CSV 4.0) (W. Europe Standard Time)(-60) AS Time FROM C:\DOCUME~1\ADMINX~3\LOCALS~1\Temp\1\_FilteredPerfmonLog.csv
AutoDetectTheIntervalOfThePerfmonLog ERROR Number: -2147221020
AutoDetectTheIntervalOfThePerfmonLog ERROR Description: Error parsing query: Log row too long
LogFile "C:\DOCUME~1\ADMINX~3\LOCALS~1\Temp\1\_FilteredPerfmonLog.csv", Row number 1 Unknown Error
SELECT QUANTIZE((PDH-CSV 4.0) (W. Europe Standard Time)(-60), AUTO) AS Interval FROM C:\DOCUME~1\ADMINX~3\LOCALS~1\Temp\1\_FilteredPerfmonLo
g.csv GROUP BY Interval
GenerateArrayOfTimeIntervals ERROR Number: -2147221020
GenerateArrayOfTimeIntervals ERROR Description: Error parsing query: Log row too long
LogFile "C:\DOCUME~1\ADMINX~3\LOCALS~1\Temp\1\_FilteredPerfmonLog.csv", Row number 1 Unknown Error
Executing: ReLog.exe "C:\DOCUME~1\ADMINX~3\LOCALS~1\Temp\1\FilteredPerfmonLog.csv" -q -y -o C:\DOCUME~1\ADMINX~3\LOCALS~1\Temp\1\FilteredPer
fmonLogCounterList.txt

Input
----------------
File(s):
C:\DOCUME~1\ADMINX~3\LOCALS~1\Temp\1\_FilteredPerfmonLog.csv (CSV)

Begin: 20.2.2008 19:14:15
End: 21.2.2008 17:47:16
Samples: 1352

The command completed successfully.

Waiting for C:\DOCUME~1\ADMINX~3\LOCALS~1\Temp\1\_FilteredPerfmonLogCounterList.txt to be created...
Found C:\DOCUME~1\ADMINX~3\LOCALS~1\Temp\1\_FilteredPerfmonLogCounterList.txt
Generating XML data...
Analyzing "Processor Utilization Analysis"...
CHARTSELECT QUANTIZE((PDH-CSV 4.0) (W. Europe Standard Time)(-60),AUTO) AS Interval, AVG(TO_REAL([\\SERVERNAME9111\Processor(0)\% Processo
r Time])) AS 0, AVG(TOREAL(\\SERVERNAME9111\Processor(1)\% Processor Time)) AS 1, AVG(TOREAL([\\SERVERNAME9111\Processor(2)\% Processor Ti
me])) AS 2, AVG(TOREAL(\\SERVERNAME9111\Processor(3)\% Processor Time)) AS 3, AVG(TOREAL([\\SERVERNAME9111\Processor(_Total)\% Processor T
ime])) AS Total INTO C:\docume~1\adminuser\mydocu~1\palrep~1\FMASERVERNAME91112008022019PERFMONLOGANALYSISDate2008-02-22_11-01-1010\
ProcessorPercentProcessorTime0.gif FROM C:\DOCUME~1\ADMINX~3\LOCALS~1\Temp\1\FilteredPerfmonLog.csv GROUP BY Interval ORDER BY Interval AS
C
===============================ERROR========================================
GenerateChart
An error occurred while creating a chart using LogParser.
ChartTitle: \Processor(*)\% Processor Time
Categories: AUTO
ChartType: Line
GroupSize: 640x480
Legend: ON
MaxCategoryLables: 0
OTSFormat: MM/dd hh:mm
Query:
SELECT QUANTIZE((PDH-CSV 4.0) (W. Europe Standard Time)(-60),AUTO) AS Interval, AVG(TO_REAL([\\SERVERNAME9111\Processor(0)\% Processor Time
])) AS 0, AVG(TOREAL(\\SERVERNAME9111\Processor(1)\% Processor Time)) AS 1, AVG(TOREAL(\\SERVERNAME9111\Processor(2)\% Processor Time))
AS 2, AVG(TOREAL(\\SERVERNAME9111\Processor(3)\% Processor Time)) AS 3, AVG(TOREAL(\\SERVERNAME9111\Processor(_Total)\% Processor Time))
AS Total INTO C:\docume~1\adminuser\mydocu~1\palrep~1\FMASERVERNAME91112008022019PERFMONLOGANALYSISDate2008-02-22_11-01-1010\Proces
sorPercentProcessorTime0.gif FROM C:\DOCUME~1\ADMINX~3\LOCALS~1\Temp\1\FilteredPerfmonLog.csv GROUP BY Interval ORDER BY Interval ASC
Error Number: -2147221020
Error Description: Error parsing query: Log row too long
LogFile "C:\DOCUME~1\ADMINX~3\LOCALS~1\Temp\1\_FilteredPerfmonLog.csv", Row number 1 Unknown Error
============================================================================
SELECT QUANTIZE((PDH-CSV 4.0) (W. Europe Standard Time)(-60), AUTO) AS Interval, MIN(TO_REAL([\\SERVERNAME9111\Processor(0)\% Processor Time
])) AS min, AVG(TOREAL(\\SERVERNAME9111\Processor(0)\% Processor Time)) AS avg, MAX(TOREAL([\\SERVERNAME9111\Processor(0)\% Processor Time
])) AS max FROM C:\DOCUME~1\ADMINX~3\LOCALS~1\Temp\1\_FilteredPerfmonLog.csv GROUP BY Interval
QueryCounterInstanceData ERROR Number: -2147221020
QueryCounterInstanceData ERROR Description: Error parsing query: Log row too long
LogFile "C:\DOCUME~1\ADMINX~3\LOCALS~1\Temp\1\_FilteredPerfmonLog.csv", Row number 1 Unknown Error
SELECT QUANTIZE((PDH-CSV 4.0) (W. Europe Standard Time)(-60), AUTO) AS Interval, MIN(TO_REAL([\\SERVERNAME9111\Processor(1)\% Processor Time
])) AS min, AVG(TOREAL(\\SERVERNAME9111\Processor(1)\% Processor Time)) AS avg, MAX(TOREAL([\\SERVERNAME9111\Processor(1)\% Processor Time
])) AS max FROM C:\DOCUME~1\ADMINX~3\LOCALS~1\Temp\1\_FilteredPerfmonLog.csv GROUP B
Coordinator
Feb 25, 2008 at 5:33 AM
The error "Log row too long" is an error from Microsoft Log Parser. It effectively means there are too many perf counters in the perfmon log. You can work around this by using Perfmon logs with less perf counters or by increasing the value of the CSVInMaxRowSize registry key. I can't remember the exact location of this registry key, so you would need to use Regmon or Process Monitor from http://www.sysinternals.com to the registry key path for it that Log Parser is checking.

With all of that said, I intend add checks into the next version of PAL that will look for this condition and adjust the registry key to prevent this from even happening in the future. Just keep in mind that the larger your perfmon log, then more resources it takes to analyze and the more time.