計算機的硬件速度總結
CPU-3GHZ
每秒執行 3*10^9次/s,也就是1ns執行3次,時鐘週期約0.3ns
光速是 3*10^8m/s=0.3m/ns 0.3ns光行走0.1m=10cm
L1 cache 32k 3 cycles 1ns
L2 cache 6M 14 cycles 4.7ns
L3 cache: 25 cycles
memory 100 cycles
正常情況下,當CPU操作一塊內存區域時,其中的信息要麼已經保存在L1/L2 cache,
要麼就需要將之從系統主存中調入cache,然後再處理
cpu從cache取數據最小單位cache line 64bytes和DDR3 4一次訪問數據大小一致
memory從ssd拿數據最小單位通常是4k bytes
北橋芯片 bindwidth 10Gb/s
DDR3主存 1333Mhz ,250個時鐘週期 83ns
pci express x16 8Gb/s
CPU緩存基本由SRAM不需要刷新時間所以凸顯其數據傳輸速度很快
DRAM只含一個晶體管和一個電容器,集成度非常高,靠電容器來儲存信息,
所以需要不斷刷新補充電容器的電荷
南橋芯片 bindwidth 1Gb/s
pci express x1 500Mb/s
wired ethernet 1G 100Mb/s
wireless 802.11b 1Mb/s
wireless 802.11g 2.5Mb/s
internet latency 80ms
SATA 300Mb/s
7200 RPM 16M Cache 60Mb/s
USB 1.0 1Mb/s
USB 2.0 30MB/s
網卡
10G網卡接口每秒需要處理接近15M個packet,15M packets * 8 bit * 84 byte
1個packet處理時間需要在70ns之內
TLB
每個進程需要解決虛擬地址到物理地址的映射問題
4k爲一個頁表,頁表項4bytes表示,4G內存需要2^20個頁表項,約4M內存
多級頁表查詢會比較慢,一級頁表可以直接獲得物理內存地址。
二級頁表先確定一級再確定二級然後獲得物理地址,二級頁表2^10+2^10個頁表項,約8k內存
64位系統更大內存,支持成千上萬個進程,需要方案折中
4級頁表2^9 個PGD + 2^9 個PUD + 2^9 個PMD + 2^9 個PTE = 2048個頁表項
可以支持2^36個頁表等於256T內存,一個頁表8bytes,需要16K內存,5次內存IO訪問一個物理內存
TLB訪問速度非常快,和寄存器相當,比L1訪問還快。類似cache,全相連,直接匹配,組相連
1.CPU產生一個虛擬地址
2.MMU從TLB中獲取頁表,翻譯成物理地址
3.MMU把物理地址發送給L1/L2/L3/內存
4.L1/L2/L3/內存將地址對應數據返回給CPU
perf stat -e dTLB-loads,dTLB-load-misses,iTLB-loads,iTLB-load-misses -p $PID
硬盤
硬盤驅動器(HDD)
在旋轉盤片上以磁性方式存儲數據,尋道找到磁盤上數據存儲
成本低
而固態驅動器(SSD)
在半導體電路上以電子方式存儲數據,通過電學信號的傳輸完成對閃存芯片。
主控緩存和閃存組成,由於不存在機械結構;
受到讀寫次數的限制,固態硬盤的使用壽命比較短
比機械硬盤更容易受到外界的干擾,而且數據損壞是難以修復的
固態硬盤讀取數據的時間一般都在0.1ms以下,而機械硬盤讀取數據的時間一般在10ms
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
Round trip within same datacenter 從一個數據中心往返一次,ping一下 500,000 ns
Disk seek 磁盤搜索 10,000,000 ns
Read 1 MB sequentially from network 從網絡上順序讀取1兆的數據 10,000,000 ns
Read 1 MB sequentially from disk 從磁盤裏面讀出1MB 30,000,000 ns
Send packet CA->Netherlands->CA 一個包的一次遠程訪問 150,000,000 ns
DPDK
https://www.slideshare.net/garyachy/dpdk-44585840