当页导航

onstat -g glo 输出中Eff列的实际意义,能揭示什么类的性能问题?

一般回答这个问题都会帖上这Eff的官方解释(Efficiency. The ratio of the total CPU time to the total time the threads ran on the virtual processor.)那么我们已经知道这是一个比值,而且是把输出的前两列的比值,作为单独一列,可见它的重要性。问题:Eff值的高和低有什么实...显示全部

一般回答这个问题都会帖上这Eff的官方解释(Efficiency. The ratio of the total CPU time to the total time the threads ran on the virtual processor.)那么我们已经知道这是一个比值,而且是把输出的前两列的比值,作为单独一列,可见它的重要性。问题:Eff值的高和低有什么实际意义,或者通过这个值能大概知道什么事情。是否能根据以往经验通过简单例子介绍一下它所展示的魅力。

收起
希望获得:具体解决, 原理分析

5回答

孙国荣孙国荣业务部门经理 , GBase
NETSKY[CN]赞同了此回答
CPU内部调度算法决定,当并发任务多时,线程将切换到适当的CPU上运行。也就是当系统压力足够时,CPU将均衡分担。当任务较少时,繁忙的CPU集中在前面几个,表示CPU足够运行任务,对性能没有影响的。你可以并发测试多个任务来看单个任务的执行时间来判断。...显示全部

CPU内部调度算法决定,当并发任务多时,线程将切换到适当的CPU上运行。

也就是当系统压力足够时,CPU将均衡分担。

当任务较少时,繁忙的CPU集中在前面几个,表示CPU足够运行任务,对性能没有影响的。你可以并发测试多个任务来看单个任务的执行时间来判断。

收起
 2017-01-25
孙国荣孙国荣业务部门经理 , GBase
1.Eff=total(user CPU+sys CPU)/thread其中total为有效的CPU时间,thread为线程在该VP上的总共运行时间(秒)。TOTAL与THREAD总时间值有差异,那么差值去哪里了?就是问题。首先需要了解Informix/GBase 8t采用多线性、多进程的架构。线程有多个状态:通常包括:sleeping,running,cond ...显示全部

1.Eff=total(user CPU+sys CPU)/thread

其中total为有效的CPU时间,thread为线程在该VP上的总共运行时间(秒)。

TOTAL与THREAD总时间值有差异,那么差值去哪里了?就是问题。


首先需要了解Informix/GBase 8t采用多线性、多进程的架构。

线程有多个状态:通常包括:sleeping,running,cond wait,waiting lock等。

当线程为running状态时,运行的CPU时间片统计到thread值中,但当一个线程处于running状态时,可能需要等待系统资源(latch on resource),比如:IO/内存等。LATCH时间非常短暂,线程会不断的尝试申请该资源,尝试次数超过1000次,就计入:lngspins 统计值。

running状态的现场等待latch的时间就是上面提的差异值。

这样我们就明白了EFF的含义了。当系统内部资源紧张,总竞用时,就会出现EFF<100,或者更低值。一般此值越低表示CPU资源有效利用率偏低。

可以通过模拟多个读SQL语句,发起大的IO操作,就会出现AIO VP的EFF值非常低。

通过EFF值我们就可以判断系统是否存在内部资源的竞用,不过还需要进一步通过onstat -g spi等来监控具体原因。

如下是:我模拟发起多个任务,造成CPU资源,IO资源不足下,onstat -g glo的输出结果。

其中lngspins 值非常高,AIO 的EFF非常低,可以通过onstat -g wai和onstat -g ath,onstat -g act命令监控线程的更多的信息。

onstat -g glo

GBase 8t Database Server Version 12.10.FC4G1AEE -- On-Line -- Up 02:24:55 -- 2529364 Kbytes

MT global info:

sessions threads  vps      lngspins time   

15       227      19       138      851     

          sched calls     thread switches yield 0   yield n   yield forever

total:    14875249        5854451         13141415  287154    36857   

per sec:  102556          84856           86367     5488      542      

Virtual processor summary:

class       vps       usercpu   syscpu    total   

cpu         2         240.32    14.52     254.84  

aio         12        20.38     43.86     64.24   

lio         1         0.00      0.07      0.07   

pio         1         0.00      0.04      0.04   

adm         1         0.05      0.19      0.24   

msc         1         0.01      0.02      0.03   

fifo        1         0.00      0.04      0.04   

total       19        260.76    58.74     319.50  

Individual virtual processors:

vp    pid       class       usercpu   syscpu    total     Thread    Eff  

1     4886      cpu         135.61    6.85      142.46    169.66    83%

2     4887      adm         0.05      0.19      0.24      0.00       0%

3     4888      lio         0.00      0.07      0.07      0.38      18%

4     4889      pio         0.00      0.04      0.04      0.08      47%

5     4890      aio         2.01      4.21      6.22      155.62     3%

6     4891      msc         0.01      0.02      0.03      0.03     100%

7     4892      fifo        0.00      0.04      0.04      0.00       0%

8     4893      cpu         104.71    7.67      112.38    139.86    80%

9     4894      aio         1.92      4.09      6.01      154.57     3%

10    4895      aio         1.71      3.87      5.58      152.73     3%

11    4896      aio         1.82      3.69      5.51      152.44     3%

12    4897      aio         1.59      3.65      5.24      151.84     3%

13    4898      aio         1.67      3.53      5.20      151.19     3%

15    4899      aio         1.62      3.55      5.17      149.75     3%

16    4900      aio         1.58      3.46      5.04      149.21     3%

14    4901      aio         1.59      3.55      5.14      150.73     3%

17    4902      aio         1.60      3.44      5.04      148.89     3%

18    4903      aio         1.64      3.28      4.92      148.43     3%

19    4904      aio         1.63      3.54      5.17      147.71     3%

                 tot         260.76    58.74     319.50  

收起
答案包含:具体解决, 原理分析 2017-01-24
zhendazhenda数据库运维工程师 , 昆仑银行
非常感谢耐心详细的回答,对eff参数所体现出的资源问题也有一些理解。想再问个问题。若cpu core较多,分配给cpu vp的个数也较多(小于cpu core数),会出现执行的thread集中在前面几个cpu中(thread 没有 switch 到资源充足的cpu上),其它cpu使用较少,不能均匀使用cpu资源。问题:是否有什...显示全部

非常感谢耐心详细的回答,对eff参数所体现出的资源问题也有一些理解。想再问个问题。若cpu core较多,分配给cpu vp的个数也较多(小于cpu core数),会出现执行的thread集中在前面几个cpu中(thread 没有 switch 到资源充足的cpu上),其它cpu使用较少,不能均匀使用cpu资源。

问题:是否有什么方法使thread均匀使用cpu vp资源(绑定cpu不灵活一般不想用)。


例如:

Individual virtual processors:

vp    pid       class       usercpu   syscpu    total     Thread    Eff  

1     4886      cpu         135.61    6.85      142.46    169.66    83%

2     4887      cpu         138.61    6.85      145.46    186.66    63%

3     4888      cpu         2.01      4.21      6.22      6.82      98%

4     4889      cpu         0.00      0.04      0.04      0.04      100%

5     4890      cpu         0.00      0.07      0.07      0.07      100%

收起
答案包含:具体解决, 通用方法 2017-01-25
zhendazhenda数据库运维工程师 , 昆仑银行
顶一下。显示全部

顶一下。

收起
 2017-02-07
小崔哥小崔哥数据库运维工程师 , GBase
Total=usercpu+syscpu   表示VP在物理CPU上的运行时间Thread                            表示线程在VP上的运行时间Eff=Thread/total显示全部

Total=usercpu+syscpu   表示VP在物理CPU上的运行时间

Thread                            表示线程在VP上的运行时间

Eff=Thread/total

收起
 2017-02-08
  • zhendazhenda(提问者)
    您这解释在问问题之前已知晓,现在的问题是否有什么方法使多多个thread均匀使用cpu vp资源,避险出现部分vp 忙,部分vp空闲导致(绑定cpu不灵活一般不想用),上面已贴出示例,
    2017-02-10

撰写回答

提问者

zhenda数据库运维工程师, 昆仑银行
发布1026
回答545