sys.dm_os_linux_cpu_stats(Transact-SQL)

适用于: Linux 上的 SQL Server 2025 (17.x)

返回一个表,其中包含详细的 Linux CPU 统计信息,在 SQL Server 2025 (17.x) 累积更新 (CU) 1 及更高版本中提供超出 SQL Server 的系统级见解。

列名称 数据类型 可为 Null Description
uptime_secs 漂浮 自系统启动以来的秒数。
loadavg_1min 漂浮 运行队列中的作业数(就绪或等待磁盘 I/O)超过 1 分钟。
user_time_cs bigint USER_HZ 花费在用户模式下。
nice_time_cs bigint USER_HZ 花费在低优先级的用户模式下(nice)。
system_time_cs bigint USER_HZ 用于系统模式。
idle_time_cs bigint USER_HZ 用于空闲任务。
iowait_time_cs bigint USER_HZ 等待 I/O 完成。
irq_time_cs bigint USER_HZ 服务中断。
softirq_time_cs bigint USER_HZ 服务 SoftIRQs。
interrupt_cnt bigint 自系统启动以来服务的中断数。
csw_cnt bigint 自系统启动以来的上下文切换数。
boot_time_secs bigint 启动时间,自 Unix 纪元以来的秒数。
total_forks_cnt bigint 自系统启动以来的分叉数。
proc_runable_cnt bigint 处于可运行状态的进程数。
proc_ioblocked_cnt bigint 等待 I/O 的进程数被阻止。
C3_time bigint 标识为仅供参考。 不支持。 不保证以后的兼容性。
C2_time bigint 标识为仅供参考。 不支持。 不保证以后的兼容性。
C1_time bigint 标识为仅供参考。 不支持。 不保证以后的兼容性。
C3_count bigint 标识为仅供参考。 不支持。 不保证以后的兼容性。
C2_count bigint 标识为仅供参考。 不支持。 不保证以后的兼容性。
C1_count bigint 标识为仅供参考。 不支持。 不保证以后的兼容性。

Permissions

要求具有对服务器的 VIEW SERVER PERFORMANCE STATE 权限。

注解

此 DMV 提供自系统启动以来的累积统计信息。

值不限于 SQL Server 活动。 它们反映整个 Linux 主机。

有关解释 Linux CPU 统计信息的详细信息,请参阅分发版的 proc_stat(5) 手动页。

将此 DMV 与其他特定于 Linux 的 DMV 配合使用,以便进行整体监视:

使用场景

  • 诊断 CPU 饱和度:使用 loadavg_1minproc_runable_cnt并确定 user_time_cs 系统是否处于大量 CPU 负载之下。

  • 调查 I/O 等待:高 iowait_time_csproc_ioblocked_cnt 值可能指示存储瓶颈。

  • 分析系统响应能力:频繁的上下文切换(csw_cnt)或中断(interrupt_cnt)可能会向系统计划或硬件发出信号。

  • 将 SQL Server 性能与系统活动相关联:由于这些指标是系统范围的,因此它们可帮助你区分特定于 SQL Server 和更广泛的 OS 级别问题。

例子

答: 系统的当前 CPU 统计信息

用于 sys.dm_os_linux_cpu_stats 获取系统的当前 CPU 统计信息。 此示例是一次性快照,显示运营团队经常监视的常见信号。

SELECT GETDATE() AS sample_time,
       uptime_secs,
       loadavg_1min,
       proc_runable_cnt,
       proc_ioblocked_cnt,
       interrupt_cnt,
       csw_cnt,
       user_time_cs,
       system_time_cs,
       idle_time_cs,
       iowait_time_cs
FROM sys.dm_os_linux_cpu_stats;

B. 将主机压力与 SQL 计划程序相关联

运行以下示例查询以获取主机快照。

SELECT loadavg_1min,
       proc_runable_cnt,
       proc_ioblocked_cnt,
       interrupt_cnt,
       csw_cnt
FROM sys.dm_os_linux_cpu_stats;

以下查询返回有关 SQL 计划程序压力的信息,不包括 DAC 和隐藏计划程序。

如果计划程序显示高 runnable_tasks_count ,主机 loadavg_1min 数超过提升 proc_runable_cnt的 CPU 计数,则系统可能受 CPU 限制。 如果 SQL 可运行率较低,但主机 proc_ioblocked_cnt 和 I/O 等待速率较高,则存储是可疑的。

注释

主机指标是系统范围的,不限于 SQL Server。

SELECT scheduler_id,
       runnable_tasks_count,
       current_tasks_count,
       work_queue_count,
       is_online,
       is_scheduler_online,
       load_factor
FROM sys.dm_os_schedulers
WHERE scheduler_id < 255;