一、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中使用...