Microsoft SQL @@ CPU_BUSY替换CPU饱和统计



我们有一个最初为Sybase编写的过程,该过程查看@@ cpu_busy变量,以检测RDMS上的CPU负载。该应用程序将针对Microsoft SQL运行。

     curCPULoadPercent=100*(@@cpu_busy - prevCpuBusy)/((@@cpu_busy - prevCpuBusy)+(@@io_busy - prevIOBusy)+(@@idle - prevIdle))

如果上述任何一个均为负数,则比率被忽略,并且使用了比率。

不幸的是,Microsoft Engineers停止增加数字(134217727),而不是让数字翻转,因此在29天后未能透露CPU负载(根据我正在阅读的内容)。

(Sybase工程师知道从负数减去负数会带来积极差异。)

以下提供了有关如何监视CPU负载的提示,但我们无法确定要查看哪种等待类型。

https://msdn.microsoft.com/en-us/library/ms179984.aspx

与等待类型相比,我们一直在测量@@ cpu_busy差异,而不是任何特定的等待类型匹配。

我们的计划是建立一个预测模型,以预测相关的等待类型的旧比例,但我想知道是否有人已经弄清楚了。

有什么建议?

从SQL2005开始的运行时详细信息,您可以从SQL Server获得等待类型和锁以及加载和内存压力等事物的运行时详细信息。

不要将@@变量用于您正在做的事情。如果您可以准确定义要检测到的内容,我可以保证较新的SQL视图完全具有您想要的内容,尤其是可以在蜘蛛或整体上下文中定义的值。

SQL Profiler工具可以绘制您可能要寻找的值。

本杰明·尼瓦雷斯(Benjamin Nevarez)具有CPU利用率的答案:

http://sqlblog.com/blogs/ben_nevarez/archive/2009/07/26/getting-cpu-utilization-data-data-from-sql-sql-server.aspx

它使用来自sys.dm_os_ring_buffers的动态MGMT查看数据其中ring_buffer_type = n'ring_buffer_scheduler_monitor'。

最新更新