長假過完了,腦殼空轉時間過長,嚴重不利於智商發育,因此寫了這篇文章燒燒腦。本文通篇充斥了各類數字,圖表,圖畫,堅持不住的容許半途而廢,想腦洞開竅的仍是要堅持,多培養對相關領域數字的敏感性。html
程序員天天要寫代碼,得益於摩爾定律,80%的場景是不須要關注本身寫的程序的性能的,但如今互聯網行業的IT開發人員愈來愈多,常常會有人遇到高併發狀況下的性能問題,這些問題的根源有至關一部分是軟件開發人員太「軟」,把計算機系的基礎課《計算機組成原理》知識還給老師了,對硬件知識掌握不夠致使的。有些代碼段須要有一些硬件知識的背景才能寫好,因此這些數字就是爲了磨練磨練這個敏感度。程序員
中國單機時代(1981-1994)的程序員是幸福的,那時的程序員只要關注機器硬件的性能指標就好了,來優化本身的程序;但其實那代程序員也是不幸福的,那時的286內存少的可憐,我已經不記得個人那臺286電腦的內存是多少了,但這個CPU的理論最大支持內存就是16MB。以當時的條件,家裏那臺機器配的內存確定達不到最大值,保守估計有4MB就不錯了,這個道理就跟如今的消費級的i5理論最大能配32GB,通常普通人4G就夠了,普通遊戲玩家或碼農通常來個8G,有追求的骨灰級玩家或碼農會來個16G,沒人能達到主板支持的上限。web
本文假定讀者已經瞭解現代計算機系統硬件方面的相關知識,對於一些計算機組成原理的常識再也不作累述(可能稍微介紹下)。現代CPU緩存簡單示意圖:編程
上圖爲4核CPU,多核CPU的緩存設計大概是這樣,L1與L2爲每一個核的內部cache,L3爲幾個核的共享cache。越靠近CPU的速度越快,成本越高,因此廠商的用料(容量)越小。緩存
這是用CPU-Z看到的民用級CPU的緩存參數: L1 cache 4*128K=512KB, L2 cache 1M,L3 cache 6MB。服務器
操做 |大約時間 |時鐘週期微信
CPU訪問寄存器 |秒殺 |1 cycle網絡
CPU訪問L1 Cache |0.5 ns |~3-4 cycles架構
CPU分支預測失敗 |5 ns |併發
CPU訪問L2 Cache |7 ns |~10-20 cycles
CPU訪問L3 Cache |~15 ns |~40-45 cycles
Mutex加鎖/解鎖 |100 ns |
CPU內存訪問 |~60-120ns |~120-240 cycles
千兆網絡發送1MB數據 |10 ms |
從內存順序讀取1MB數據 |0.25 ms |
機房內網絡來回 |0.5 ms |
異地機房之間網絡來回 |30~100 ms |
SATA磁盤尋道 |10 ms |
從SATA磁盤順序讀取1MB數據|20 ms |
固態盤SSD訪問延遲 |0.1~0.2 ms|
你們知道互聯網對服務器的需求特別大,美國不少大公司已經不知足於傳統IDC提供的空間和運營成本,直接自建,facebook更是發起了open compute計劃,爲互聯網行業的節能服務器和數據中心制定標準,國內廠商浪潮看到這個市場並參與進來開發了smart rack產品,也就是百度,阿里採購的天蠍機櫃。其設計特色爲機櫃標準爲44U標準機櫃,分爲上中下三個空間,1-20U和25-44U是計算節點的安裝位,因此能裝40臺左右服務器。
U爲機櫃尺寸單位,爲unit的縮寫
服務器寬 19英寸
服務器厚度 1U = 4.445cm
機櫃高尺寸以服務器厚度的倍數增長:
服務器機櫃最大常規尺寸 42U
每一個機架接入40臺服務器
每臺服務器的內存爲24GB,磁盤爲10×1TB=10T的SATA機械硬盤(15000轉)或者10×160GB=1.6T的SSD固態硬盤
國內頂尖的數據中心最多可爲一個機櫃提供12KW的功率,而一個1U雙路服務器的電源功率爲500W左右。
PV是PC網站時代衡量一個網站規模的指標,直接翻譯過來就是頁面觀看,常譯爲頁面瀏覽量或點擊量,由於一個web網站上每次用戶點擊都會致使頁面變化,也即一個PV。
另外兩個衡量指標也捎帶介紹下:
UV, Unique Visitor,獨立訪客。訪問您網站的一臺電腦客戶端爲一個訪客。00:00-24:00內相同的客戶端只被計算一次。
IP,指獨立IP數。00:00-24:00內相同IP地址之被計算一次。
一個網站規模怎麼樣,看這些統計的訪問量就能看出來:
網站|日平均PV|時間
12306.cn |1900萬 |2015年2月25
12306.cn |297億 |2015年春運
weibo.com |PV值8000萬 |2015年2月25
tmall.com |3億5000萬 |2015年2月25
taobao.com |12億 |2015年2月25
京東 |2億7000萬 |2015年2月25
亞馬遜中國 |2億8000萬 |2015年2月25
蘑菇街 |230萬 |2015年2月25
知乎 |5200萬 |2015年2月25
數據來源於http://www.alexa.cn/
大規模分佈式存儲系統:原理解析與架構實戰
http://wenku.baidu.com/view/029214fe910ef12d2af9e714.html 服務器尺寸表
http://coderplay.iteye.com/blog/1485760 CPU cache
http://ifeve.com/cpu-cache-flushing-fallacy-cn/ CPU緩存刷新的誤解
http://tech.hexun.com/2014-09-30/168994467.html 傳統服務器噩夢 最新Smart Rack機櫃解析
見微知著:騰訊數據中心開放活動隨想 http://solution.zdnet.com.cn/2014/0925/3034961.shtml
關於麥芽麪包 darkjune_think:
麥芽麪包分享的是一個從小就以找一份用電腦幹活的工做爲目標的人的見聞,思考。那時仍是89年,那時能見到的一份這樣的職業是用王碼打字。固然,如今這個目標實現了,並且是一份還算能夠的編程工做。如今代碼寫的很少了,更多的是對工程實踐的思考,對系統架構的思考。故事還在繼續,分享仍然不斷
微信訂閱號: darkjune_think
如何訂閱:
掃描下面的二維碼,選識別二維碼,選關注。