onstat -g cpu Runtime Statistics
The onstat -g cpu command displays the runtime statistics for each thread
Thread CPU Info: tid name vp Last Run CPU Time #scheds status 2 lio vp 0 3lio* 05/17 14:50:12 0.0000 1 IO Idle 3 pio vp 0 4pio* 05/17 14:50:14 0.1003 2 IO Idle 4 aio vp 0 5aio* 06/05 11:19:00 29409.7586 9587799 IO Idle 5 msc vp 0 6msc* 06/05 11:13:08 0.5395 8285 IO Idle 6 fifo vp 0 7fifo* 05/17 14:50:17 0.1003 2 IO Idle 7 aio vp 1 18aio* 06/05 11:18:41 26612.1701 547051 IO Idle 8 aio vp 2 19aio* 06/05 11:18:41 20347.7772 192793 IO Idle 9 aio vp 3 20aio* 06/05 11:18:41 17557.7473 98296 IO Idle 10 aio vp 4 21aio* 06/05 11:18:41 15019.1089 58158 IO Idle 11 aio vp 5 22aio* 06/05 11:18:41 13677.5354 37307 IO Idle 12 aio vp 6 23aio* 06/05 11:18:41 12590.4999 25941 IO Idle 13 aio vp 7 24aio* 06/05 11:18:41 12126.8398 19536 IO Idle 14 aio vp 8 25aio* 06/05 11:18:41 11624.9303 15885 IO Idle 15 aio vp 9 26aio* 06/05 11:18:41 11156.8239 13536 IO Idle 16 aio vp 10 27aio* 06/05 11:07:54 10725.3271 10801 IO Idle 17 aio vp 12 28aio* 06/05 11:07:54 10162.7624 7455 IO Idle 18 aio vp 13 32aio* 06/05 11:01:27 9756.4333 6810 IO Idle 19 aio vp 11 29aio* 06/05 11:07:54 10477.7255 8890 IO Idle 20 aio vp 14 30aio* 06/05 11:01:27 9506.3932 6260 IO Idle 21 aio vp 15 31aio* 06/05 11:01:27 9397.0935 5144 IO Idle 22 main_loop() 12cpu 06/05 11:19:18 173.9541 2615494 sleeping secs: 1 23 sm_poll 1cpu* 06/05 11:19:18 1103818.1445 887544368 sleeping forever 24 soctcppoll 33soc* 06/05 11:19:18 1628937.9008 179442184 running 25 sm_listen 1cpu 05/17 14:50:21 0.0006 13 sleeping forever 26 sm_discon 11cpu 06/05 11:19:18 11.5217 1628134 sleeping secs: 1 27 soctcplst 1cpu* 06/05 11:19:10 420.8395 4888852 sleeping forever 28 soctcplst 8cpu* 06/04 11:01:31 0.0013 16 sleeping forever 29 flush_sub(0) 11cpu 06/05 11:19:18 18.9316 1836335 sleeping secs: 1 30 flush_sub(1) 11cpu 06/05 11:19:18 29.5947 2133469 sleeping secs: 1 31 flush_sub(2) 12cpu 06/05 11:19:18 29.8892 2123998 sleeping secs: 1 32 flush_sub(3) 10cpu 06/05 11:19:18 96.6285 4833916 IO Wait ....... </div>
Output Description
| Option | Description |
|---|---|
| tid | The ID of the thread |
| name | The name of the thread |
| vp | The ID of the virtual processor in which the thread is running |
| Last Run | The timestamp when the thread last ran |
| CPU Time | The time taken until now by the thread. |
| #scheds | The number of times the thread was scheduled to run |
| status | The status of the thread. Possible status values are:
|
Notes
The number of threads can help determine if there are any internal issues, for example ER uses thread throttling
when apply issues are seen on the target, so if the number of ER threads is low there might be a problem.
The CPU time shown for a thread is updated each time the thread yields and is based on the change in clock time since the thread last started. For threads such as the poll threads, which spend the majority of their time in an OS call such as select(), epoll_wait() or similar, the oninit process (the SOC VP) will not be consuming any processor time yet IDS will show that thread as running. Hence for poll threads the onstat -g cpu time will be unhelpful(1), and the time shown by onstat -g glo for the SOC VP will be accurate as this reflects that actual time consumed by the process which is calculated by the kernel. It reflects real time / clock time and not the amount of actual cpu time consumed by that thread. IDS does not know when a thread makes a system call that potentially will block (these calls happen all the time for the poll threads). All IDS knows is that the thread's state is running (from the IDS perspective) but that does not mean the process is running at the OS level.
The CPU time shown for a thread is updated each time the thread yields and is based on the change in clock time since the thread last started. For threads such as the poll threads, which spend the majority of their time in an OS call such as select(), epoll_wait() or similar, the oninit process (the SOC VP) will not be consuming any processor time yet IDS will show that thread as running. Hence for poll threads the onstat -g cpu time will be unhelpful(1), and the time shown by onstat -g glo for the SOC VP will be accurate as this reflects that actual time consumed by the process which is calculated by the kernel. It reflects real time / clock time and not the amount of actual cpu time consumed by that thread. IDS does not know when a thread makes a system call that potentially will block (these calls happen all the time for the poll threads). All IDS knows is that the thread's state is running (from the IDS perspective) but that does not mean the process is running at the OS level.