CPU 讀取cache、內存、磁盤性能

google 工程師Jeff Dean 首先在他關於分佈式系統的ppt文檔列出來的,處處被引用的不少。緩存

1秒=10^3毫秒=10^6微妙=10^9納秒=10^12皮秒網絡

讀 cache ns 級,讀內存100 ns,從內存順序讀1MB 250,000ns,從磁盤讀一MB30ms分佈式

-----------------------------------------------------------google

Numbers Everyone Should Know線程

L1 cache reference 讀取CPU的一級緩存 0.5 ns
Branch mispredict(轉移、分支預測) 5 ns
L2 cache reference 讀取CPU的二級緩存 7 ns
Mutex lock/unlock 互斥鎖\解鎖 100 ns
Main memory reference 讀取內存數據??? 100 ns
Compress 1K bytes with Zippy 1k字節壓縮 10,000 ns
Send 2K bytes over 1 Gbps network 在1Gbps的網絡上發送2k字節 20,000 ns
Read 1 MB sequentially from memory 從內存順序讀取1MB 250,000 ns【0.25ms】
Round trip within same datacenter 從一個數據中心往返一次,ping一下 500,000 ns     【0.5ms】
Disk seek  磁盤搜索 10,000,000 ns 【10ms】
Read 1 MB sequentially from network 從網絡上順序讀取1兆的數據 10,000,000 ns 【10ms】
Read 1 MB sequentially from disk 從磁盤裏面讀出1MB 30,000,000 ns 【30ms】
Send packet CA->Netherlands->CA 一個包的一次遠程訪問 150,000,000 ns【150ms】

 

從小到大:         進程

CPU的時鐘頻率:CPU運算時的工做的頻率(1秒內發生的同步脈衝數)的簡稱。單位是Hz。    ip

CPU週期:讀取一個指令節所需的時間內存

指令週期:讀取並執行完一個指令所需的時間資源

CPU時間片:CPU分給每一個進程的時間文檔

 

在Linux上CPU調度的最小單位時間片單位爲5ms-800ms。

Linux調度器實際是識別task_struct進行調度。 不管進程線程,底層都對應一個task_struct,進程和線程的區別是共享資源的多少,兩個進程間徹底不共享資源,兩個線程間共享全部資源。

相關文章
相關標籤/搜索