IBM Support

How To Collect CPU Data On Microsoft Windows 2008 Server and Windows 7 using Performance Monitor

Troubleshooting


Problem

You need to collect CPU data for problems with the IBM WebSphere Application Server 100% CPU usage component on Microsoft Windows Platforms. Gathering this information before calling IBM support will help you understand the problem and save time analyzing the data.

Resolving The Problem

Windows 2008 Server and Windows 7 include a performance viewer (part of the Microsoft management console) that can be used to determine which threads in a Java process are consuming the CPU.

Collect the following information when the problem is with the application server process:

1. From the Start menu, select Control Panel > System and Security > Administrative Tools > Performance Monitor.

Alternatively, select Start > Run... > type the following: “perfmon.msc” (without quotes)






2. From the Performance Monitor window, expand Data Collector Sets > Select User Defined.

3. Right click on Data Collector Sets > New > Data Collector Set. This step can also be performed by Right clicking on empty space in the right hand panel of the User Defined window.






4. In the Create new Data Collector Set window name the collector and select Create Manually (Advanced) > Next.

5. Ensure that Performance Counter is checked under the Create Data Logs section > Next.


6. On the following window select Add... to add a new performance counter.


7. In the Available Counters section, expand the Thread counter section and select the following:

Counter = % Processor Time
Counter = ID Process
Counter = ID Thread


8. In the Instances of selected object section, click the dropdown at the bottom <All Instances> and select Search.






9. Select <All instances>, the select Add. This will populate the list on the right. Click OK to close the window and return to the previous screen. Select Next and provide the storage location for the file > Finish.

10. This should return the newly created Performance monitor displayed on the right. Enable the monitor by double clicking, or right click > Start.

11. Collect javacores by following MustGather steps provided in the "Collecting data manually" section of the following MustGather data technote:

MustGather: Performance, Hang, or High CPU Issues on Windows

12. Once the MustGather is completed, end the Performance Monitor logging. From the Performance Monitor tool, right-click Log Name in the counter window, then click Stop. The log file to send to IBM is referenced in the Log File Name column.

13. Collect the perfmon log (.blg file), the three javacores created by the MustGather steps, and all of the WebSphere Application Server logs.


14. Follow instructions to send diagnostic information to IBM support

Analyzing the Data

1. Save the .blg file and start Perfmon using Start > Run.. > type "perfmon" (less quotes) .



2. Click "View Log File":



3. On the Source tab, select the Log Files radio button > Add... and Input the location of the saved .blg file. In most cases, it's helpful to narrow down the time at the bottom if a time frame is available when the issue occurred.



4. On the Data tab, select Add... Add the following parameters by pressing the dropdown arrow at the top under "Thread" (these should be listed in the dropdown if the data was captured correctly).

Parameters:

Counter = % Processor Time
Counter = ID Process
Counter = ID Thread

To add the parameters, select each field, but in the Instances of selected object filter on "java". Then select all of the java instances using CTRL+click.

When completed click Add >>, then select OK.




5. This should return to the previous screen "Performance Monitor Properties". Click Apply > OK.
6. Now a graph should be displayed which shows the collected data. Select the icon for "Report" as shown below:



7. Once the report has populated, look along the line for any major consumption of the top line (in this case, % processor time) and make note of each thread # that perfmon assigns as well as the thread ID (2nd number in the column). In this case, Java thread #46 is essentially consuming 68% processor time:




8. Once all the threads taking a large portion of CPU are identified, convert this number in the column (Thread ID) to Hex and search the javacore from the timeframe for the Thread IDs. In this example Java thread #46, Thread ID 3532 = DCC (Hex).

9. Search the javacore from this timeframe for the hexadecimal thread IDs. From the example above, searching the javacore for “DCC” yields the following thread: WebContainer : 13 with it's associated call stack.

[{"Product":{"code":"SSEQTP","label":"WebSphere Application Server"},"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Component":"100% CPU Usage","Platform":[{"code":"PF033","label":"Windows"}],"Version":"9.0;8.5.5;8.5;8.0;7.0","Edition":"","Line of Business":{"code":"LOB45","label":"Automation"}}]

Document Information

Modified date:
15 June 2018

UID

swg21454841