簡體   English   中英

使用OpenOnload Solarflare c獲得性能提升

[英]Performance gain using OpenOnload Solarflare c

我正在嘗試使用服務器中安裝的Solarflare NIC來評估系統的性能提升。

服務器詳細信息 :英特爾(R)酷睿TM i7-8086K CPU @ 4.00GHz(12核/ 8 GB RAM)

網絡 :Solarflare XtremeScale X2522(10G)適配器

我已經用C ++編寫了一個簡單的TCP / IP服務器/客戶端程序。 服務器/客戶端都接受兩個輸入。 緩沖區大小和接口名稱。 使用setsockopt,我可以使用SO_BINDTODEVICE將套接字綁定到特定接口。

        const char *device = argv[2];
        int rc1=setsockopt(server_fd, SOL_SOCKET, SO_BINDTODEVICE, device, strlen(device));
        if (rc1 != 0)
        {
            cerr << "set sockopt bindtodevice failed: " << strerror(errno) << endl;
            exit(1);
        }

我在client和server.cpp程序中都使用了上面的代碼片段。

為了測量延遲,在從大小為2048的客戶端發送10000000消息前后,我使用了微秒級的chrono時間戳。

我使用以下命令運行SO_BINDTODEVICE +將套接字綁定到solarflare接口,以運行客戶端服務器程序:

onload ./client(buf_size)(interface_name_solarflare)

onload ./server(buf_size)(interface_name_solarflare)

對於無負載的基准測試:

./client(buf_size)(接口名稱)

./服務器(buf_size)(接口名稱)

我能夠觀察到的是,在onload情況下的延遲比沒有onload情況下的延遲高。 我也嘗試過更改緩沖區大小。 這只是發送時間。

我的樣本結果以微秒為單位:

在此處輸入圖片說明

有人可以指導我在這里做錯什么嗎? 我是使用OpenOnLoad的新手。

注意:我的客戶端/服務器程序中沒有使用過任何其他setsockopt選項。

提前致謝。 :)

我認為您可以為客戶端和服務器創建單獨的命名空間,然后進行測試(以防您沒有兩個系統)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM