日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux内核为大规模支持100Gb/s网卡准备好了吗?并没有

發布時間:2023/12/16 linux 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux内核为大规模支持100Gb/s网卡准备好了吗?并没有 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

又是大年初一,和過去三十多年的新年一樣,無聊,消沉,吃不好飯,盼著上班(小時候是盼著開學…)…


事實上,不僅僅是Linux內核,幾乎所有的 現代操作系統 都沒有為支持100Gb/s做好準備。

這是一個變革的年代,現代操作系統 已經不再 現代

我們回望一下類似Unix/Linux,Windows NT這些操作系統是如何被稱作 現代 的。嗯,是因為虛擬內存系統。

隔離的地址空間 讓操作系統一下子進入了現代社會。在此之前,操作系統都是譚浩強書里寫的那種一旦操作空指針就會系統崩潰的系統。


自打操作系統成為現代操作系統后,貌似它就沒有再有過突破性的進化,但是其周邊,確實翻天覆地了。

先看CPU和系統架構,先是其主頻的瘋漲,然后又是多核架構。主頻增加這個對于操作系統內核來講是好事,在單位時間內能多執行很多指令,這完全是一個打雞血的過程。然而多核心架構就讓幾乎所有的操作系統內核有點開始吃力應對了。其對數據同步的解法中,往往都是見招拆招地加鎖。

多核心架構對系統性能的作用力和主頻增加的作用力方向是相反的,如果主頻的增加讓CPU在單位時間執行了更多的指令,那么多核之間的溝通成本抵消了這個主頻提升帶來的收益,因為同步成本是高昂的。

多核心架構重演了 人月神話

最后的結果就是,支持SMP多核架構的操作系統內核,其實就是給當年引入虛擬內存時的現代操作系統全部掛滿了枷鎖而已。單就操作系統內核本身而言,它更慢了,而不是更快了!

意思是說,多核心架構下,單獨的CPU上,操作系統的執行效率要比單核架構下操作系統的執行效率更低了!核數越多,溝通同步成本越大,最終讓性能/核心數曲線上凸!

而溝通同步的方式,無外乎就是,鎖!

所以說,鎖是阻止操作系統性能多核擴展性伸縮性的罪魁禍首!

事實上,Linux內核也好,UNIX也好,Windows NT也好,根本就不是為多核心架構而設計的,它們只是 簡單適應了SMP而已

操作系統雖然是現代的, 但是卻不是當代的! (我記得上小學和初中那會兒,老師說過現代和當代的區別)


在現代操作系統發展停滯不前的時候,硬件卻沒有閑著。

100Gb/s網卡的意思是說, 如果有100Gb的數據在緩沖區里,它可以在1秒中把它們全部發送出去。但問題是, 操作系統有能力在1秒鐘內準備好100Gb的數據嗎?

我們知道,在我們對操作系統的傳統認知中,數據的源頭來自于用戶態緩沖區,經由操作系統內核協議棧,將數據懟到網卡緩存區。我們可以簡單測算一下,操作系統的內核協議棧有沒有能力1秒鐘往網卡懟100Gbit的數據。

這里有幾個簡單的統計數據統計點,獲取這些數據的方法:

  • 在tcp_write_xmit函數的while循環里打點,看看發送一個skb需要多久;
  • 使用pktgen類似的機制,測算單包發送延時。

在如今常見的1Gb/s的網卡上發包測算,平均約4微秒發送一個Full Mss的包,貌似Linux內核對于千兆網卡應對的還不錯,但這并不意味著它應對10Gb/s,40Gb/s,100Gb/s這些發送速率時,是可以線性擴展的!

簡單反算,100Gb/s需要單包發送延時在120納秒以內,我們只需要測算一下120納秒夠不夠內核協議棧處理一個數據包就可以了。

納秒,這是一個cache級別的時間,如果發生了一次cache命中,至少可以節省20到30納秒的時間,但是反過來如果很不幸cache missing了,那么就要在120納秒中扣除20到30納秒,這樣就剩下90納秒了。

該重頭戲了:

  • 一次spinlock需要20納秒左右的時間;
  • 一次內存分配需要大概60納秒的時間;

很不幸,沒有時間剩下來了。以上的測算還是基于64字節的小包,絲毫沒有包括真正的處理開銷!而我們知道,協議棧處理過程中,有超級多的協議邏輯…120納秒遠遠不夠!

在協議棧處理數據包并發送的過程中,內存分配和內存操作將會引入巨大的延時,這十有八九又會牽扯到cache missing!

從另一個角度看,Linux內核作為一個通用操作系統內核,顯然并沒有針對單獨的特性做極端的性能優化,這個意義上,我不是說它沒有為大規模支持100Gb/s網卡做好準備,而是它可能根本就沒有準備在支持這種高速網卡的競賽中取得勝利!這方面你可以和David Miller交流一下,看看在他看來,代碼的可維護性,簡潔性,統一處理這些和極端的性能優勢相比,哪個更重要。

不過,無論如何,Linux內核,Windows NT之類的OS內核在多核心架構下無法線性擴展,這確實是阻礙其從 現代操作系統 進化到 當代操作系統 的路易十六!


浙江溫州皮鞋濕,下雨進水不會胖!

總結

以上是生活随笔為你收集整理的Linux内核为大规模支持100Gb/s网卡准备好了吗?并没有的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。