While looking at some threading related issue the other day, I used the following commands for diagnostics.
Collecting paging activity information
To collect paging data, use the following command:
vmstat {time_between_samples_in_seconds} {number_of_samples} \ > vmstat.txt vmstat 10 10 > vmstat.txt
If you start vmstat when the problem occurs, a value of 10 for time_between_samples_in_seconds and 10 for number_of_samples usually ensures that enough data is collected during the problem. Collect the vmstat.txt file 100 seconds later.
Collecting system CPU usage information
You can gather CPU usage information using the following command:
top -b > top.txt
You can then collect the top.txt file.
Collecting process CPU usage information
Gather process and thread-level CPU activity information at the point at which the problem occurs, using the following command:
top -H -b -c > top_threads.txt cat top_threads.txt top - 06:22:10 up 192 days, 19:00, 1 user, load average: 0.00, 0.00, 0.00 Tasks: 542 total, 1 running, 541 sleeping, 0 stopped, 0 zombie Cpu(s): 1.0%us, 0.0%sy, 0.0%ni, 99.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 164936028k total, 160272700k used, 4663328k free, 0k buffers Swap: 0k total, 0k used, 0k free, 64188236k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 24741 xxx 22 0 xxxg xxxg 11m S 0.0 50.0 0:00.00 java
or if you would like to look into a specific process using PID then issue
top -H -b -c -p> top_threads_pid.txt
Allow this command to run for a short time. It produces a file called top_threads_pid.txt.