Oracle视图V $ OSSTAT包含一些运行统计信息,包括:
我读过的文件还不清楚这些文件是否曾经重置过。有谁知道吗?
我的另一个问题是,我想计算出系统正在经历的平均CPU负载。为此,我希望我必须去:
busy_ticks / (idle_ticks + busy_ticks)
这是对的吗?
2008年11月更新
Oracle 10g r2在此表中包含一个名为LOAD的统计信息。它在读取值时提供机器的当前负载。这比使用其他信息要好得多,因为* _ticks数据是“自实例启动”以来不是当前时间点。
答案 0 :(得分:4)
如果可用,您需要包含'IOWAIT_TICKS`。
IDLE_TICKS - 百分之一的数字 第二,处理器闲置, 总计超过所有处理器
BUSY_TICKS - 一个百分之一秒的数字 处理器一直在忙着执行 用户或内核代码,总计全部 处理器
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。
答案 1 :(得分:0)
我不相信我需要包含USER_TICKS和SYS_TICKS。
BUSY_TICKS的文档说明:
"...been busy executing user or kernel code, totalled over all processors"
表示BUSY_TICKS已包含USER_TICKS和SYS_TICKS。
相同的NICE_TICKS - 仍然是用户时间(只是较低的优先级)。
虽然包括IOWAIT_TICKS似乎是必要的。
答案 2 :(得分:0)
你对Busy值是正确的。我检查了我的一个系统,Busy等于User + Sys。
我还确认Busy和Idle帐户一直在我的系统上(我的系统没有IOWAIT)。
答案 3 :(得分:0)
想一想,如果我的目的是要了解整体机器负载,我可能会更好,包括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)
取决于您的观点。知道你在追求什么,我认为你做得对。