4.3 CPU性能侦测
CPU的性能问题在日常使用中很常见,但是表现形式几乎只有一种,就是在任务管理
器中看到CPU的使用率居高不下。这时候需要侦测问题的根源并选择对应的处理方式。
4 .3 .1 侦测CPU压力
侦测CPU问题通常可以使用性能监视器、SQL Trace和DMVs等。下面简要介绍一下。
1 .性能监视器
性能监视器(PerfMon)可能是侦测问题的第一个工具(任务管理器不算,因为它不能 找到存在什么问题)。这是一个Windows上的工具,可用于分离问题,找到究竟是由操作系 统本身导致的还是由SQL Server导致的问题。比如对于CPU高利用率,在使用性能监视器 时可以重点关注下面的计数器。
□ Processor/ %Privileged Time: 花费在执行Windows内核命令上的处理器时间的百分比。 □ Processor/ %User Time:花费在处理应用程序如SQL Server上的处理器时间百分比。 □ Process (sqlservr.exe)/ %Processor Time:每个处理器上所有进程的总处理时间。
然后,把上面的计数器加人监视器并进行监控,如图4-2所示。

除了上面3 个计数器以外,还可以用SQL Statistics计数器来监控。
□ SQL Server:SQL Statistics/Auto-Param Attempts/sec □ SQL Server:SQL Statistics/Failed Auto-params/sec □ SQL Server:SQL Statistics/Batch Requests/sec □ SQL Server:SQL Statistics/SQL Compilations/sec □ SQL Server:SQL Statistics/SQL Re-Compilations/sec □ SQL Server:Plan Cache/Cache hit Ratio
这 4 种计数器本身并没有好与坏的区别,但是不同情况下会有一些建议值或者提醒相
对明显的异常情况。

2. SQL Trace
可以用Profiler来生成脚本并用于SQL Trace。对于周期性发生的问题,SQL Trace非
常有用,因为作为图形化操作的Profiler—直开着并不合理,有时候反而会给已经处于压力 底下的服务器带来新一轮压力。使用SQL Trace最重要的目的是获取消耗最多CPU的查询, 这部分稍后演示。
3. DMV
相比前面两种工具,DMV更加快速和便捷,不需要进行过多的预备工作。下面是常规
步骤:
1 ) 使用sys.dm_os_wait_stats检査信号等待(在第7 章介绍),检查是否存在CPU压力。 2 ) 根据等待类型,通过 sys.dm_os_wait_stats 和 sys.dm_os_schedulers 确定 CPU 问题
的种类。
3 ) 通过 sys.dm_exec_query_stats 和 sys.dm_exec_sql_text 找出计划缓存中 CPU 消耗最
高的查询。
4 ) 通过sys.dm os waiting tasks找到当前等待任务中CPU相关的等待类型最髙的任务。 5 ) 从 sys.dm exec requests中找到当前査询中资源使用最高的查询。

4 .3 .2 研究CPU相关的等待信息
当一个请求由于某些原因产生等待时,SQL Server会把相关信息存放在sys.dm_os_ wait_stats这个DMV中。很多第三方工具都是通过分析这个DMV中的信息进行问题侦测 的,下面来看个例子。
比如可以用下面语句检查等待类型中等待时间最长的10个类型。

SELECT TOP ( 10 )
wait_type ,
waiting_tasks_count ,
( wait_time_ms - signal_wait_time_ms ) AS resource_wait_time ,
max_wait_time_ms ,
CASE waiting_tasks_count
WHEN 0 THEN 0
ELSE wait_time_ms / waiting_tasks_count
END AS avg_wait_time
FROM sys.dm_os_wait_stats
WHERE wait_type NOT LIKE '%SLEEP%' -- 去除不相关的等待类型
AND wait_type NOT LIKE 'XE%'
AND wait_type NOT IN -- 去除系统类型
( 'KSOURCE_WAKEUP', 'BROKER_TASK_STOP', 'FT_IFTS_SCHEDULER_IDLE_WAIT',
'SQLTRACE_BUFFER_FLUSH', 'CLR_AUTO_EVENT', 'BROKER_EVENTHANDLER',
'BAD_PAGE_PROCESS', 'BROKER_TRANSMITTER', 'CHECKPOINT_QUEUE',
'DBMIRROR_EVENTS_QUEUE', 'SQLTRACE_BUFFER_FLUSH', 'CLR_MANUAL_EVENT',
'ONDEMAND_TASK_QUEUE', 'REQUEST_FOR_DEADLOCK_SEARCH', 'LOGMGR_QUEUE',
'BROKER_RECEIVE_WAITFOR', 'PREEMPTIVE_OS_GETPROCADDRESS',
'PREEMPTIVE_OS_AUTHENTICATIONOPS', 'BROKER_TO_FLUSH' )
ORDER BY wait_time_ms DESC

通过上面的査询,可以看到自上一次SQL Server启动之后,所有非系统等待信息中总 等待时间排名最久的10个等待类型。根据这些等待类型,可以粗略地找到一个进一步查看
问题的切人点。
对于CPU压力,通常相关的等待类型有SOS_SCHEDULER_Y1ELD、CXPACKET和
CMEMTHREAD。这部分将在第7 章中详细介绍

1. SOS_SCHEDULER_YIELD
如果在sys.dm_exec_requests或者sys.dm_os_waiting_tasks中看到这个等待类型的等待
时间很长,意味着这个查询消耗了很多CPU,首要任务就是优化这个查询。
2. CXPACKET
当查询出现并行操作时,这种等待类型可能就会出现。在OLTP系统中,并行执行往
往意味着查询不够优化,需要进一步的优化。
3. CMEMTHREAD
表示等待着同步内存中的对象,一些内存对象会同时被多个线程使用,当多线程访问
时,有些对象会因为某些原因无法响应请求,导致产生这种类型的等待,不过这种类型相
对较少。

转载于:https://www.cnblogs.com/zhouwansheng/p/9247830.html

4.3 CPU性能侦测相关推荐

  1. 4.4 I/O性能侦测

    4.4 I/O性能侦测 通常I/O问题的主要侦测手段是使用性能监视器的对应计数器,特别是Physical Disk\ Disk Reads/sec和 Physical Disk\Disk Writes ...

  2. 20线程测试cpu性能软件,CPU常用跑分软件 你知道那些?

    跑分测试是检测硬件性能的重要手段,但毕竟需要专业测试软件,很多小伙伴对于测试软件一头雾水,不知道有哪些测试软件,本次笔者就给大家科普一下CPU测试中常用的测试软件,帮助大家更好的了解自己电脑的性能. ...

  3. windows CPU性能监控命令

    windows CPU性能监控命令 分别为用户CPU时间  系统CPU时间   总CPU时间 typeperf "\Processor(_Total)\% User Time" & ...

  4. 如何最大化利用CPU性能创作沉浸式VR体验

    -- 本文来自英特尔游戏开发部门的 Justin Link -- 在三年多的时间,我有幸负责管理一家名为Chronosapien的工作室,而我们主要是通过新兴技术组件来创建交互式内容.我们涉足了大量不 ...

  5. cpu性能排名学习笔记

    笔记本cpu性能天梯图: https://www.zhihu.com/question/411017637/answer/1759530444 笔记本cpu性能天梯图2: https://zhuanl ...

  6. CPU缓存与CPU性能的关系

    说到CPU,不得不说的就是CPU缓存,目前CPU的缓存已经成了衡量CPU性能的一个必要指标,那么CPU缓存到底对CPU性能的影响有多大呢? 我们知道,CPU执行指令时,会将执行结果放在一个叫" ...

  7. AIX系统CPU性能评估-1

    作者:Peak Wong出处:IT专家网2008-05-08 17:21 本文对cpu性能的命令作了详细介绍,并给出了对于系统cpu监控的建议. 1.vmstat 使用vmstat来进行性能评估,该命 ...

  8. AMD Cpu 性能分析

    未完待续... 首先,几款APU系列的cpu: A8-7410: 一款低功耗的移动版处理器,四核心主频最高2.5GHz,二级缓存2MB, 图形核心Radeon R5 内存频率DDR3-1866,热设计 ...

  9. 12 | 套路篇:CPU 性能优化的几个思路

    上一节我们一起回顾了常见的 CPU 性能指标,梳理了核心的 CPU 性能观测工具,最后还总结了快速分 析 CPU 性能问题的思路.虽然 CPU 的性能指标很多,相应的性能分析工具也很多,但理解了各种指 ...

最新文章

  1. python中if else语句用法_讲解Python中if语句的嵌套用法
  2. 双轴机械臂串口控制命令开发与测试:STM32F103控制板,简易调试命令集合
  3. 深度学习核心技术精讲100篇(十九)--GBDT(梯度提升树) 和 Resnet (残差网络)的原理
  4. [转]Responsive Tables Demo
  5. 【设计模式 00】设计模式的六大原则
  6. 计算机网络之网络层:11、移动IP
  7. log4j的配置文件的位置
  8. ENVI监督分类中SVM(支持向量机)工具
  9. linux系统的unip命令
  10. 11的倍数c语言,11-1,5,11,12的倍数(容斥原理)
  11. 从零开始实现图片加载特效之黑白照片、倒影图片、图片蒙版
  12. 游戏辅助小助手框架构想
  13. 电脑钢琴模拟器——Flash版(附曲谱)
  14. 解决pgAdmin4安装后,启动失败的问题
  15. ValueError: Dimensions of labels and X must be compatible
  16. 软件测试与质量(MOOC华中科技大学)
  17. No (visible) service implements the interface org.qiwen.serv
  18. PCB封装之QFP、PQFP、LQFP、TQFP及PCB详解
  19. 请求-encodeURI
  20. MySQL: Invalid GIS data provided to function st_geometryfromtext

热门文章

  1. 一张表左关联另外两张表,三表关联
  2. 手把手教你用 Homer 处理 fNIRS 数据
  3. 第七课:MobileNetv1、MobileNetv2、MobileNetv3学习
  4. 学会感谢--谈辞职信的写法
  5. 已知圆外一点坐标,以及圆心坐标、半径,求圆的切线方程
  6. python中异常语句_python 异常
  7. App测试流程及测试点(个人整理版)-转
  8. 《青春》 by 席慕容
  9. firewalld 指定IP访问某端口
  10. 软考·系统架构师论文——论软件的高并发设计