代码之家  ›  专栏  ›  技术社区  ›  Jamie Love

甲骨文V$OSSTAT

  •  3
  • Jamie Love  · 技术社区  · 16 年前

    Oracle view V$OSSTAT包含一些运营统计数据,包括:

    • 空闲\处理器空闲的百分之一秒数,在所有处理器上总计

    我读过的文档还不清楚这些是否被重置。有人知道吗?

    另一个问题是,我想计算出系统的平均CPU负载。为此,我希望我必须:

    busy_ticks / (idle_ticks + busy_ticks)
    

    这是正确的吗?

    Oracle 10g r2在此表中包含一个名为LOAD的统计数据。它提供读取值时机器的当前负载。这比使用其他信息要好得多,因为*_ticks数据是“自实例启动”而不是当前时间点的数据。

    5 回复  |  直到 16 年前
        1
  •  4
  •   Community CDub    4 年前

    其次,处理器处于空闲状态, 所有处理器的总和

    处理器一直忙于执行 用户或内核代码,总计

    IOWAIT_TICKS-一个 处理器一直在等待I/O恢复 处理器

    这里有一个问题。

    SELECT (select value from v$osstat where stat_name = 'BUSY_TICKS') /
    (
       NVL((select value from v$osstat where stat_name = 'IDLE_TICKS'),0) +
       NVL((select value from v$osstat where stat_name = 'BUSY_TICKS'),0) +
       NVL((select value from v$osstat where stat_name = 'IOWAIT_TICKS'),0)
    )
    FROM DUAL;
    

    在10.2及更高版本上,名称_TICKS已更改为_TIME。

    关闭数据库实例时,将重置动态视图中的累积值。

    Automatic Performance Statistics v$OSStat

        2
  •  0
  •   Jamie Love    16 年前

    我不认为我需要包括用户标记和系统标记。

    繁忙时间的文档说明如下:

    "...been busy executing user or kernel code, totalled over all processors"
    

    这表明忙碌的标记已经包括用户标记和系统标记。

    对于NICE_TICKS也一样-这仍然是用户时间(只是优先级较低)。

    不过,包括IOU滴答声似乎是必要的。

        3
  •  0
  •   Jamie Love    16 年前

    仔细想想,如果我的目的是了解整个机器负载,我可能会更好地在分子中加入IOWAIT_TICKS&分母,以了解不可用于我的工作的CPU时间量。

    SELECT (
    (select value from v$osstat where stat_name = 'BUSY_TICKS') +
    (select value from v$osstat where stat_name = 'IOWAIT_TICKS'))
    /
    (
       NVL((select value from v$osstat where stat_name = 'IDLE_TICKS'),0) +
       NVL((select value from v$osstat where stat_name = 'BUSY_TICKS'),0) +
       NVL((select value from v$osstat where stat_name = 'IOWAIT_TICKS'),0)
    )
    FROM DUAL;
    

    这将确保如果机器有很高的IO争用率或等待率,我不会被误导,并且会通过运行更多作业来增加问题。

        4
  •  0
  •   Leigh Riffel    16 年前

        5
  •  0
  •   Leigh Riffel    16 年前

    关于忙值,您是正确的。我检查了我的一个系统,Busy等于User+Sys。

    我还确认,在我的系统上,忙碌和空闲的帐户一直存在(我的系统没有IOWAIT)。