How to isolate High CPU usage for Informix
How to isolate High CPU usage for Informix?
Looking at the OS statistics, sometimes it can be observed that 'oninit' process(es) corresponding to the configured CPU-class virtual processors, use an high percentage of the server CPU
Such high CPU usage events are short peaks and not the normal condition.
Here are a few ways to associate to each Informix running session the amount of CPU that is being used by it.
- You can do onstat -u to get session ids then onstat -g ses <sessionid> to
get threads. Finally do onstat -g ath to list threads and and look at the ones which have a status of running.
- You can see active threads with 'onstat -g act -r 2'. This will show you active
threads every 2 seconds. If you will see same thread repeatedly, then you can
use value of 'rstcb' column of previous output to catch session:
onstat -u | grep value_of_rstcb
- Then you can get sql causing high CPU utilization with onstat -g ses session_id"
You can use this sql to create a list of sessions sorted on the highest amount of cpu and including the sql the session is currently running ( note that the current sql might not be the one that used so much cpu ):
SELECT s.sid, s.username, s.uid, s.pid, s.hostname, t.tid,t.name, t.statedesc, t.statedetail, q.sqs_statement, t.cpu_time
FROM syssessions s, systcblst t, sysrstcb r, syssqlstat q
WHERE t.tid = r.tid AND s.sid = r.sid AND s.sid = q.sqs_sessionid
ORDER BY t.cpu_time desc;