CPU性能指标
1,主頻
主頻 = 時(shí)鐘頻率,它是指CPU內(nèi)部晶振的頻率,常用單位為MHz,它反映了CPU的基本工作節(jié)拍;
時(shí)鐘頻率又稱主頻,它是指CPU內(nèi)部晶振的頻率,常用單位為MHz,它反映了CPU的基本工作節(jié)拍;
2,時(shí)鐘周期
?? 時(shí)鐘周期 t =1/ f; 主頻的倒數(shù)
3,機(jī)器周期
???機(jī)器周期A? = m*t ;一個(gè)機(jī)器周期包含若干個(gè)時(shí)鐘周期
4,指令周期
???指令周期B = m*t*n; 執(zhí)行一條指令所需要的時(shí)間,一般包含若干個(gè)機(jī)器周期
?5,CPI
CPI = m*n; ?平均每條指令的平均時(shí)鐘周期個(gè)數(shù)
??
指令周期B = CPI×機(jī)器周期 = n(CPI=n)×m×?xí)r鐘周期=nm/主頻f, 注意指令周期單位是s或者ns,CPI無量綱
? 參考:https://en.wikipedia.org/wiki/Cycles_per_instruction
?
6,MIPS(MillionInstructions Per Second)
?? MIPS = 每秒執(zhí)行百萬條指令數(shù) = 1/(CPI×?xí)r鐘周期)= 主頻/CPI
MFLOPS 每秒百萬浮點(diǎn)運(yùn)算次數(shù)。
???表示秒鐘所能執(zhí)行的指令條數(shù),對(duì)于微型計(jì)算機(jī)可用CPU的主頻和每條指令的執(zhí)行所需的時(shí)鐘周期來衡量。
?
包含關(guān)系:指令周期通常用若干個(gè)機(jī)器周期來表示,在機(jī)器語言中,使用執(zhí)行一條指令所需要的機(jī)器周期數(shù)來說明指令執(zhí)行的速度。而機(jī)器周期又包含若干個(gè)時(shí)鐘周期。時(shí)鐘周期是最基本的操作單位。
參考: https://en.wikipedia.org/wiki/Instructions_per_second
注意:計(jì)算機(jī)的運(yùn)算速度一般用每秒鐘所能執(zhí)行的指令條數(shù)來表示。由于不同類型的指令所需時(shí)間長度不同,因而運(yùn)算速度的計(jì)算方法也不同。例如,根據(jù)不同類型的指令出現(xiàn)的頻度,乘上不同的系數(shù)求得統(tǒng)計(jì)平均值,得到平均運(yùn)算速度。這種方法用MIPS(Millions of Instruction Per Second)作單位,即每秒百萬條指令。
????又如,直接給出CPU的主頻和每條指令的執(zhí)行所需的時(shí)鐘周期。周期一般以MHz為單位。主頻即計(jì)算機(jī)的時(shí)鐘頻率,它在很大程度上決定了主機(jī)的工作速度。例如,型號(hào)為486DX-133的微型計(jì)算機(jī),表明它的CPU型號(hào)為486,DX為含浮點(diǎn)處理器,數(shù)字133的含義是主頻為133MHz。
題: 若某處理器的時(shí)鐘頻率為500MHz,每4個(gè)時(shí)鐘周期組成一個(gè)機(jī)器周期,執(zhí)行一條指令需要3個(gè)機(jī)器周期,則該處理器的一個(gè)機(jī)器周期▁8▁ns,平均執(zhí)行速度為▁42▁MIPS
解析如下:
時(shí)鐘周期T等于主頻的倒數(shù),即T=1/500MHz=1/(0.5×10的9次方Hz)=2 ns,機(jī)器周期等于4個(gè)時(shí)鐘周期即=4T=4×2 ns=8 ns,每條指令的時(shí)鐘周期數(shù)CPI=3×4=12,則平均速度為:f/(CPI×10的6次方)=(500×10的6次方)/(12×10的6次 方)=500/12=41.6≈42MIPS.計(jì)算主頻的倒數(shù)時(shí)要注意把主頻的MHz換算成Hz即500后面加6個(gè)0=500×10的6次方=0.5×10的9次方,1/10的9次方 Hz=1ns
每條指令的時(shí)鐘周期數(shù)CPI=3×4=12,執(zhí)行一條指令需要3個(gè)機(jī)器周期數(shù),一個(gè)機(jī)器周期包含4個(gè)時(shí)鐘周期,所以CPI=3×4=12,這里計(jì)算 的都是周期的個(gè)數(shù),和具體的時(shí)間ns納秒沒有關(guān)系,若帶上具體的時(shí)間,一個(gè)時(shí)鐘周期T=2ns,一個(gè)機(jī)器周期就是2×4=8ns,執(zhí)行一條指令需要三個(gè)機(jī) 器周期得出執(zhí)行一條指令需要的具體時(shí)間為3×8=24ns,執(zhí)行每條指令的需要的時(shí)鐘周期數(shù)CPI換句話說就是把執(zhí)行每條指令需要的時(shí)間24ns換算成時(shí) 鐘周期個(gè)數(shù)表示,為多少個(gè)時(shí)鐘周期個(gè)數(shù)?時(shí)鐘周期是最基本的時(shí)間操作單位,500MHz主頻的處理器一個(gè)時(shí)鐘周期為2ns,24ns等于多少個(gè)時(shí)鐘周期?24/2=12個(gè)時(shí)鐘周期,即那一句:“每條指令的時(shí)鐘周期數(shù)CPI=12”。
?
CPI,IPC的關(guān)系及性能相關(guān)描述
? ? ? ? 每指令周期數(shù)(CPI)是一個(gè)很重要的高級(jí)指標(biāo),用來描述CPU如何使用他的時(shí)鐘周期,同時(shí)也可以用來理解CPU使用率的本質(zhì)。這個(gè)指標(biāo)也可以被表示未每周期指令書(instructions per cycle,IPC),即CPI的倒數(shù)。
? ? ? ? CPI較高代表CPU經(jīng)常陷入停滯,通常都是在訪問內(nèi)存。而較低的CPI代表CPU基本沒有停滯,指令吞吐量較高。這些指標(biāo)指明了性能調(diào)優(yōu)的主要工作方向。
? ? ? ? 內(nèi)存訪問密集的負(fù)載,可以通過下面的方法提高性能,如使用更快的內(nèi)存(DRAM)、提高內(nèi)存本地性(軟件配置),或者減少內(nèi)存I/O數(shù)量。使用更高時(shí)鐘頻率的CPU并不能達(dá)到預(yù)期的性能目標(biāo),因?yàn)镃PU還是需要為等待內(nèi)存I/O完成而花費(fèi)同樣的時(shí)間。換句話說,更快的CPU意味著更多的停滯周期,而指令完成速率不變。
? ? ? ? CPI的高低與否實(shí)際上和處理器以及處理器功能有關(guān),可以通過實(shí)驗(yàn)方法運(yùn)行已知的負(fù)載得出。例如,你會(huì)發(fā)現(xiàn)高CPI的負(fù)載可以使CPI達(dá)到10或者更高,而在低CPI的負(fù)載下,CPI低于1(受益于前述的指令流水線和寬度技術(shù),這是可以達(dá)到的)。
? ? ? ? 值得注意的是,CPI代表了指令處理的效率,但并不代表指令本身的效率。假設(shè)有一個(gè)軟件改動(dòng),加入了一個(gè)低效率的循環(huán),這個(gè)循環(huán)主要在操作CPU寄存器(沒有停止周期):這種改動(dòng)可能會(huì)降低總體CPI,但會(huì)提高CPU的使用和利用度。
?
uptime命令,執(zhí)行結(jié)果如下:
?1、10:19:04 //系統(tǒng)當(dāng)前時(shí)間?
2、up 257 days, 18:56 //主機(jī)已運(yùn)行時(shí)間,時(shí)間越大,說明你的機(jī)器越穩(wěn)定。?
3、12 user //用戶連接數(shù),是總連接數(shù)而不是用戶數(shù)?
4、load average // 系統(tǒng)平均負(fù)載,統(tǒng)計(jì)最近1,5,15分鐘的系統(tǒng)平均負(fù)載(和vmstat的r列相關(guān)聯(lián))
?
uptime得出的1分鐘、5分鐘、15分鐘的三個(gè)值除以邏輯核數(shù)都大于1,說明cpu負(fù)載很大,至于瓶頸需要分析了:
CPU 密集型進(jìn)程,使用大量 CPU 會(huì)導(dǎo)致平均負(fù)載升高,這時(shí)候兩者是一致的。
I/O 密集型進(jìn)程,等待 I/O 也會(huì)導(dǎo)致平均負(fù)載升高,但 CPU 使用率不一定很高。
大量等待 CPU 的進(jìn)程調(diào)度也會(huì)導(dǎo)致平均負(fù)載很高,此時(shí)的 CPU 使用率也會(huì)比較高
?
工具法檢查CPU:
1. uptime:檢查負(fù)載平均數(shù)以確認(rèn)CPU負(fù)載是隨時(shí)間上升還是下降。負(fù)載平均數(shù)超過了CPU數(shù)量通常代表CPU飽和。
2. vmstat:每秒運(yùn)行vmstat,然后檢查空閑列,看看還有多少余量。少于10%可能是一個(gè)問題。
3.mpstat:檢查單個(gè)熱點(diǎn)(繁忙)CPU,挑出一個(gè)可能的線程擴(kuò)展性問題。
4.top/prstat : 看看哪個(gè)進(jìn)程和用戶是CPU消耗大戶。
5.pidstat /prstat: 把CPU消耗大戶分解成用戶和系統(tǒng)時(shí)間。
6. perf / dtrace / stap / oprofile : 從用戶時(shí)間或者內(nèi)核時(shí)間的角度剖析CPU使用的堆棧跟蹤,以了解為什么使用這么多CPU。
7. perf / cpustat : 測量CPI。
?
USE方法檢查CPU
USE方法可以在性能調(diào)查的早期,在更深入和更耗時(shí)的其他策略之前,用來發(fā)現(xiàn)所有組件內(nèi)的瓶頸和錯(cuò)誤。
對(duì)于每個(gè)CPU,檢查一下內(nèi)容:
使用率:CPU繁忙的時(shí)間(未在空閑線程中)
飽和度:可運(yùn)行線程排隊(duì)等待CPU的程度
錯(cuò)誤:CPU錯(cuò)誤,包括可改正錯(cuò)誤
錯(cuò)誤可以優(yōu)先檢查,因?yàn)闄z查通常較快,并且最容易理解。有些處理器和操作系統(tǒng)可以感知到可以改正錯(cuò)誤的上升(錯(cuò)誤更正碼,ECC),并在不可改正錯(cuò)誤造成CPU失效前關(guān)閉一個(gè)CPU作為警示。檢查錯(cuò)誤包括檢查是否所有CPU都在線。
?
?
?
?
?
參考資料:https://blog.csdn.net/xiaojianpitt/article/details/7613489/
《性能之巔》
轉(zhuǎn)載于:https://www.cnblogs.com/wx170119/p/11433434.html
總結(jié)
- 上一篇: ab测试nginx Nginx性能优化
- 下一篇: 什么是生成器?