一個簡單的科普-延遲與RT時間

一個簡單的科普-延遲與RT時間


背景

發現稍微一複雜就沒人看.
這次像是寫一個簡單的科普文章.
主要說一下網絡延遲還有網絡的響應時間.
這裏想通過一個題目進行引申. 

如果Skylink全球商用:
中國與美國之間的網絡是走海底光纖延遲低,還是走skylink延遲低? 

關於時延的理解

我認爲: 走skylink的網絡延遲低. 

原因: 
海底光纖的走的是玻璃介質的光信號. 玻璃的反射率一般是1.5
那麼光速就是真空光速的三分之二. 也就是20萬公里秒. 

skylink走的是太空路線. 他的總鏈路理論上會多一些
上下線的 500km 累計1000公里的鏈路. 
地球半徑是 6400公里,中美之間的舉例應該是 pi*radius 
也就是 20096公里.
其實光纖的舉例肯定比20000公里要長,因爲沒有光纖是走之下的.
但是簡單估算按照 最短路徑來估算的的話就是
20000公里.
因爲走太空理論上半徑應該按照 7000公里計算
距離應該是: 21980公里 加上上下行的鏈路合計
22000公里

所以如果是走光纖, 一次round trip 的時間是 40000公里/200000(公里/秒鐘) 
也就是 200ms的時間. 

如果走skylink的話 就是 44000公里/300000(公里/秒)
不超過 150ms的時間.

所以理論上 skylink的round trip的時延會短一些. 

引申

時延就是 距離/速度. 
軟件系統的時延就是
我開始要數據, 到給我數據的時間. 
B/S結構來說. 就是我click一個按鈕之後, 到展現給我結果的時間. 

所有的操作都有時延. 
CPU的寄存器, 各級緩存, 內存, 磁盤, 網絡都有時延. 
時延是性能的最大的敵人. 
降低時延能夠提高客戶的感受. 加快處理效率. 
關於網絡的時延和IO的時延的理解主要在是三部分組成
1. 排隊. 2.傳輸 3. 處理.

磁盤IO時延的理解

網絡IO和磁盤IO在CPU看來其實都是IO
CPU和內存的改善主要是通過算力和帶寬來表示. 
網絡和磁盤的IO 考慮三方面主要是:
磁盤IO: 
1. 排隊時間: 昨天提到的有一個 nr_requests 隊列越長, 等待時間越長. 
2. 處理. queue_depth 隊列深度的系統處理能力. 
3. 傳輸. 總線, SATA接口AHCI協議,或者是PCI-E,走NVMe協議的帶寬以及速度. 

提高IO性能的方法就是 降低三個的時間. 

實際上IO的時間還是IOWAIT的時間. 
IOWAIT 其實包含 操作系統內核進行線程切換的部分時間, 以及SVCTIME. 
SVCTIME主要是硬件性能和壓力來決定. 操作系統的上下文切換,線程切換主要是考驗系統的壓力和CPU的能力. 

網絡IO時延的理解

網絡時延其實也包含協議層處理,網卡處理, 網絡傳輸, 業務處理等等步驟. 
本次不考慮 業務處理的步驟, 因爲這個很難去評判. 

網絡實驗的IO可以從內核的像是zero copy ; sendfile的地方開始介入考慮. 
nginx等可以通過減少內存中的copy來提高響應速度. 當然也可以講這一步理解爲磁盤IO和內存IO. 

進入協議層之後, 主要是協議的打包封裝的效率,這一塊一般要考慮CPU的性能. 能否快速實現打包驗證等. 
協議層裏面也會涉及很多內核參數, 比如TCP/IP的擁塞檢查,慢啓動,滑動窗口,SACK等等特性影響性能. 

進入網卡.要看一下網卡是否支持類似於TSO,GSO,LRO,GRO的一些配置. 對性能的影響等. 
追求吞吐量,響應時間可能會降低 因爲將小包進行和合併到一個大的包的處理.
追求響應時間可能就會影響吞吐量, 因爲網絡中可能充斥着很多低負載的包. 

網絡的性能主要是看包轉發率和傳輸速度的. 
不同的交換機性能, 網卡性能, 網線質量, 電磁環境都會影響.具體的網絡性能
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章