長假過完了,腦袋空轉時間過長,嚴重不利于智商發育,所以寫了這篇文章燒燒腦。本文通篇充斥了各種數字,圖表,圖畫,堅持不住的允許半途而廢,想腦洞開竅的還是要堅持,多培養對相關領域數字的敏感性。
為什么要看數字?
程序員每天要寫代碼,得益于摩爾定律,80%的場景是不需要關注自己寫的程序的性能的,但現在互聯網行業的IT開發人員越來越多,經常會有人遇到高并發情況下的性能問題,這些問題的根源有相當一部分是軟件開發人員太“軟”,把計算機系的基礎課《計算機組成原理》知識還給老師了,對硬件知識掌握不夠導致的。有些代碼段需要有一些硬件知識的背景才能寫好,所以這些數字就是為了磨練磨練這個敏感度。
中國單機時代(1981-1994)的程序員是幸福的,那時的程序員只要關注機器硬件的性能指標就行了,來優化自己的程序;但其實那代程序員也是不幸福的,那時的286內存少的可憐,我已經不記得我的那臺286電腦的內存是多少了,但這個CPU的理論最大支持內存就是16MB。以當時的條件,家里那臺機器配的內存肯定達不到最大值,保守估計有4MB就不錯了,這個道理就跟現在的消費級的i5理論最大能配32GB,一般普通人4G就夠了,普通游戲玩家或碼農一般來個8G,有追求的骨灰級玩家或碼農會來個16G,沒人能達到主板支持的上限。
CPU緩存類:
本文假定讀者已經了解現代計算機系統硬件方面的相關知識,對于一些計算機組成原理的常識不再做累述(可能稍微介紹下)。現代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(page views)數據:
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
如何訂閱:
-
掃描下面的二維碼,選識別二維碼,選關注。
文章列表