cpu time 分析
kamus在他的blog10gRAC培訓 - 2 and last。說到了這個cpu time,具體可以看正文以及下面我與他的留言,他的意思其實就是:
CPU Time相對於其它等待事件,應當先忽略CPU Time,處理其它等待事件。而且cpu time高一般代表是好事情,因為系統並沒有把時間耗費在Wait上。Elapsed Time = CPU Time + Wait Time,所以甚至我們可以說CPU Time越高越好。
不是說他的不對,只是比較覺得這句話太容易誤導別人,所以,給一些補充建議,我同意如果有很明顯的其它事件,而cpu time不明顯的時候,可以優先處理其它事件。但是,還有以下2個地方需要注意:
1、cpu time高一般代表系統的邏輯讀大,或者是高計算型的東西,如case函式,decode函式,自定義的計算型別函式等等,把cpu給耗光了,但是這個時候可能根本沒有其它等待事件。這樣是否證明這個系統很好呢?很可能是,非常不好,因為他很有可能沒有必要有這麼多的邏輯多,或者是,沒有必要有這麼多的cpu密集型計算就可以完成的任務,現在消耗這麼CPU Time就是不正常的,很容易導致系統負載異常。
2、至於wait time,比如OLTP環境上最典型的db file sequential read引起的等待,是因為發生了物理io而引起的,而很多時候,物理讀是隨邏輯讀增加而增加的,而邏輯讀可能會導致cpu time高,也就是說,cpu time與wait time一般是同時增加的。特別是比較高訪問量,大資料量,大SGA的系統,邏輯讀與物理讀都比較高,除了cpu time與db file sequential read,可能不會有很明顯的其它等待事件,而優化的結果可能是cpu time與wait time同時減少。
既然說到了db file sequential read,也解釋一下這個事件,與cpu time一樣,很多時候說明系統是比較正常的,一個優化非常良好的系統,很可能第一個等待事件就是它。因為沒有一個系統,不會發生任何物理IO,既然有物理IO,當然db file sequential read就是最好的了,一般表示讀資料正常。同樣的理由,db file sequential read大了,也可能預兆系統有不該有的物理讀發生了。
如一個看起來很正常的sql語句,單個語句效率看起來並不差,執行時間已經小於0.01秒。假定原來邏輯讀每個語句平均是100個,物理讀平均10個,執行次數每小時50萬次,優化完成以後,邏輯讀降低為平均50個,物理讀平均5個,那麼,每小時降低的邏輯讀總量就是50*50w=2500w個,降低的物理讀為5*50w=250w個。那麼再假定每個cpu每秒處理100000個邏輯讀就達到了極限,每個物理讀需要等待8ms,那麼,就可以減少約2500w/100000*3600=7%的CPU使用率(單CPU),可以減少250w*8ms=20000秒的總io wait time。
同理,如果能採用同樣的方法,減少執行次數從每小時50w到每小時25w,則收到的效果是一樣的。
評價這個cpu time與db file sequential read是否正常,需要很多調優的經驗,不過,需要記住的是,任何情況下,不要絕對的說好還是不好。最好的方式就是從statspack或者是awr上看看,排在cpu time,或者是物理讀top的語句,他們是否應當有這麼大的消耗,他們是否應當執行這麼多的次數。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/235507/viewspace-691466/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- AWR實戰分析之----CPU 100%(smon_scn_time)
- oracle中WAIT TIME 和 CPU TIMEOracleAI
- Oracle CPU TIME 漫談Oracle
- DB CPU time% 的計算公式公式
- CPU效能分析
- Unity效能分析(二)CPU/GPU分析UnityGPU
- 關於trace檔案中的recursive calls , elapse time及cpu time,
- CPU效能分析工具原理
- cpu故障現象分析 CPU常見故障案例
- 效能分析之CPU分析-從CPU呼叫高到具體程式碼行(JAVA)Java
- TopSQL,計算某條sql的CPU time.SQL
- Android-問題-obtainBuffer timed out (is the CPU pegged?)AndroidAI
- 效能分析之CPU分析-從CPU呼叫高到具體程式碼行(C/C++)C++
- 執行時報錯RuntimeError: expected device cpu but got device cuda:0ErrordevGo
- oracle實驗記錄 (sort_area_size與 cpu_time)Oracle
- python strftime和strptime的不同分析Python
- iOS探索 runtime面試題分析iOS面試題
- Best Time to Buy and Sell Stock系列分析
- CPU持續100%分析並解決
- awr中DB CPU過低的原因分析
- mysql例項cpu超過100%分析MySql
- weblogic程式高CPU使用率分析WebC程式
- 第 74 期 time.Timer 原始碼分析 (Go 1.14)原始碼Go
- 篤行雜記之ZookeeperSessionTimeOut分析Session
- 使用ttTraceMon進行TimesTen故障分析
- Storm-原始碼分析-timer(backtype.storm.timer)ORM原始碼
- Vivado實戰—單週期CPU指令分析
- 效能調優(cpu/IO/JVM記憶體分析)JVM記憶體
- [20170324]cpu 100%,latch free等待分析
- cpu使用率低負載高,原因分析負載
- 關於CPU使用率高的awr分析
- CPU 100%負載的效能優化分析負載優化
- ORACLE程式佔用CPU情況分析(轉載)Oracle
- 使用 setTimeout 拆解一些 CPU 密集型的執行任務
- Storm-原始碼分析-Multimethods使用例子ORM原始碼
- 解析實時的DB time過程分析
- 效能分析(6)- 如何迅速分析出系統 CPU 的瓶頸在哪裡
- Oracle OCP 1Z0-053 Q20(Resource Manager&CPU_WAIT_TIME)OracleAI