六 CPU優化(6)DMV與計數器

2021-09-05 03:50:54 字數 2029 閱讀 2867

一、cpu相關的dmv

1. 檢視使用cpu最多的前50名

select highest_cpu_queries.*, q.dbid, q.objectid, q.number, q.encrypted, q.[text]

from

( select top 50 qs.*

from sys.dm_exec_query_stats qs

order by qs.total_worker_time desc ) as highest_cpu_queries

order by highest_cpu_queries.total_worker_time desc

2. 檢視最頻繁重編譯的前20個儲存過程

select top 20 sql_text.text, sql_handle, plan_generation_num, execution_count, dbid, objectid

from sys.dm_exec_query_stats a

where plan_generation_num > 1

order by plan_generation_num desc

3. 計算signal wait佔整wait時間的百分比

select convert(numeric(5,4),sum(signal_wait_time_ms)/sum(wait_time_ms))

from sys.dm_os_wait_stats

該值描述了指令等待cpu資源的時間佔總時間的百分比。如果超過25%,說明cpu資源緊張。

4. 並行執行的cxpacket等待狀態

declare @cxpacket bigint

declare @sumwaits bigint

select @cxpacket = wait_time_ms from sys.dm_os_wait_stats where wait_type = 'cxpacket'

select @sumwaits = sum(wait_time_ms) from sys.dm_os_wait_stats

select convert(numeric(5,4),@cxpacket/@sumwaits)

並行執行意味著sql server查詢引擎估算某一句語句執行的代價將會超過成本代價,或者沒有合適的索引,或者篩選條件沒能夠篩選掉足夠的記錄,使得語句要返回大量的結果。為了提公升oltp系統的效能,這些都是盡量避免的。

二、cpu相關的效能計數器

1. 檢查整個伺服器的cpu使用情況

processor: % processor time

processor: % privileged time (kernel mode)

processor: % user time (user mode)

system: processor queue length

context switches/sec

2. 檢查每個程序的cpu使用情況

processor: % processor time

processor: % privileged time

processor: % user time

3. 估算執行計畫重用率

關注sqlserver:sql statistics的計數器,大致估算出執行計畫重用率。對於oltp系統的核心語句,必須有大於95%的執行計畫重用率。

initial compilations = sql compilations/sec - sql re-comilations/sec

執行計畫重用率 = (batch requests/sec - initial compilations/sec) / batch requests/sec

通過監視計數器,或者使用dmv,檢視cpu的效能。

Redis 多核CPU與NUMA架構優化

當今的cpu一般會有多顆核心 我們稱為物理核心 每顆核心都有自己的一級快取 簡稱l1 cache 與二級快取 簡稱l2 cache 這兩集快取都比較小,一般都是kb級別,cpu核心訪問它們一般只有幾納秒,非常快。一級快取又可以進一步分為指令快取與資料快取。但是一級快取與二級快取都比較小,可以儲存的指...

ios 優化 cpu快取與程式記憶體分布

今天看了一篇文章,關於cpu cache的7個示例科普cpu cache 突然發現原來自己不知道的東西有這麼多,翻查了一些資料,學到了好多東西,所以趕緊記下來,以後忘了的時候翻出來看看 作為程式設計師,有必要知道cpu是怎麼拿到資料然後處理資料的,優化程式很多都是從這一點做起,這也是我一直想知道的,...

效能優化 螢幕常亮與CPU喚醒

android在不使用的時候,螢幕在一段時間以後會變暗,再過一段時間就會熄屏,此時cpu就會休眠,那麼在這個時候,timer handler thread service等都會暫停,有時候我們需要螢幕常亮,有時候需要熄屏後cpu仍然運作,那麼這就是本文記錄的主題 最好的方式是在activity中使用...