可以使用 onstat -g wst 命令显示系统中线程的等待统计信息。
示例输出
Version 11.70.F -- On-Line -- Up 18:52:59 -- 78856 Kbytes
name tid state n avg(us) max(us)
msc vp 0 5 ready 6 9 17
msc vp 0 5 run 6 1107 2215
msc vp 0 5 IO Idle 5 2985.9s 1496.1s
main_loo 7 IO Wait 55 6496 16725
main_loo 7 yield time 44929 1.2s 343.1s
main_loo 7 ready 44998 206085 343.1s
main_loo 7 run 44985 5 436
...
sqlexec 63 IO Wait 2 1118 2165
sqlexec 63 other cond 6 34237 204142
sqlexec 63 ready 9 7 16
sqlexec 63 run 7 1.1s 7.7s
输出描述
- name (string)
- 线程名称
- tid (decimal)
- 线程 ID
- state (string)
- 说明在此输出行内等待的线程。如果单个线程在多个不同的状态中等待,那么它可能有多行输出。 state
字段能包含的值有:
- chkpt cond: 线程等待 checkpoint 条件
- cp mutex: 线程等待 checkpoint 互斥可用
- deadlock mutex: 线程等待死锁互斥可用
- empty Q: 线程等待队列中的空缓冲区
- fork: 线程等待子线程运行
- full Q: 线程等待队列上的一个完整的缓冲区
- IO Idle: I/O 线程空闲
- IO Wait: 线程产生,同时等待 I/O 完成
- join wait: 线程等待另一个线程退出
- lock mutex: 线程等待锁定互斥可用
- lockfree mutex: 线程等待锁释放互斥可用
- logflush: 发生逻辑日志清空
- log mutex: 线程等待逻辑日志互斥可用
- logcopy cond: 线程等待逻辑日志复制互斥可用
- logio cond: 线程等待逻辑日志条件
- lrus mutex: 线程等待缓冲区 LRU 互斥可用
- misc: 现场等待杂项理由
- other cond: 线程等待内部条件
- other mutex: 线程等待内部系统互斥可用
- other yield: 线程等待内部原因
- OS read: 线程等待操作系统读请求完成
- OS write: 线程等待操作系统写请求完成
- ready: 线程已准备好运行
- run: 线程已运行
- sort io: 线程等待排序 I/O 完成
- vp mem sync: 线程等待虚拟处理器同步
- yield bufwait: 线程产生,同时等待缓冲区可用
- yield 0: 线程产生,但立即超时
- yield time: 线程产生超时
- yield forever: 线程产生并保持这种方式,直到它被唤醒
- n (decimal)
- 在此状态下等待的线程次数
- avg(us) (floating point)
- 每次等待发生的时候,线程在此状态下等待的平均用户时间。时间的单位为微秒,值后的 s 表示以秒为单位计算用户时间。
- max(us) (floating point)
- 等待发生的时候,线程在此状态下等待的最大用户时间。时间的单位为微秒,值后的 s 表示以秒为单位计算用户时间。