1. 程式人生 > >異數OS TCP協議棧測試(二)--短連線篇

異數OS TCP協議棧測試(二)--短連線篇

異數OS TCP協議棧測試(二)--短連線篇

本文來自異數OS社群

 

github:  https://github.com/yds086/HereticOS

異數OS社群QQ群:  652455784

異數OS-織夢師(訊息中介軟體)群: 476260389

測試目標

 

TCP 短連結IO效能測試,Client Server都採用單執行緒半雙工模式,Client發起連線,連線後傳送請求,接收Server迴應,收到Server迴應後,關閉連線,迴圈此ECHO流程。

 

 

基本測試環境

VMware 12

異數OS宿主作業系統

debian 8 64

CPU : NUC i3 2.6G 雙核

記憶體:2GB

 

TCP重要引數如下:

 

1. bPassiveForceClose,該引數等於1表示被動強制關閉連線,被關閉方收到Fin時,不在繼續完成預設的Fin執行流程,而是傳送RST重置連結,快速關閉連線。

2. nMSLTimeOutMSL一般為30秒,在測試ECHO類應用效能時會導致Client 資源出現洩露(一般設計正常的Server端不會),為了方便測試預設設定為0,表示主動發起關閉連結的一方不進入TIME WAIT狀態,直接進入CLOSED狀態,

3. 帶包頭

200位元組負載,不帶crc checksum, 無丟包,無硬體延遲情況。

 

測試方案一 (單核快速關閉)

在同一個CPU核上建立一個Server,1Client, bPassiveForceClose=1,以太層使用異數OS軟體交換機本地核定向轉發。

 

總計ECHO IOPS 1.8M ,軟體交換機包交換能力26Mpps,由於Client佔用50%的負載,軟體交換機佔用20%負載,所以預計真實環境中最大可達到4.0M左右的ECHO能力。

 

測試方案二 (單核正常關閉)

在同一個CPU核上建立一個Server,1Client, bPassiveForceClose

=0,以太層使用異數OS軟體交換機本地核定向轉發。

 

 

總計ECHO IOPS 1.4M ,軟體交換機包交換能力25Mpps,由於Client佔用60%的負載,軟體交換機佔用10%負載,所以預計真實環境中最大可達到3.0M左右的ECHO能力。

 

測試方案三 (多核分載快速關閉)

 

雙核CPUCPU1 僅建立ServerCPU3上建立1ClientbPassiveForceClose=1,以太層使用異數OS軟體交換機定向跨核轉發。

 

 

總計ECHO IOPS 1.9M ,軟體交換機包交換能力26Mpps,由於多核模式下軟體交換機會佔用50%以上負載,所以分載後效能甚至不如單核模式。

 

測試方案四 (多核分載正常關閉)

雙核CPUCPU1 僅建立ServerCPU3上建立1ClientbPassiveForceClose=0,以太層使用異數OS軟體交換機定向跨核轉發。

 

 

 

總計ECHO IOPS 1.5M ,軟體交換機包交換能力26Mpps,相對快速關閉連線模式,在同樣包轉發能力下,效能下降25%左右。

 

總結

由於時間有限,簡單看了下1400位元組包的IO能力,效能大概降低有10%左右,由於軟體交換機在單核環境中大概有20%的負載佔用,多核更是達到50%,因此在真實硬體環境中預計每核有望達到4.0M的短連結能力,大概是主流作業系統IO能力的100倍左右,且主流作業系統一般IO能力不易多核擴充,下面是幾種主流系統的單核ECHO對比,資料來自官網以及第三方測試,可比性可能不高,但也可做參考估算。

 

 

異數OS TCP單核短連結

Seastar-Httpd短連結

F-Stack nginx 短連結

F-Stack nginx 長連結

Asio epoll長連線

Asio epoll短連結

400W

32W

9W

20W

14W(不可多核擴充)

4W(不可多核擴充)