Увеличение производительности при использовании OpenOnload Solarflare c - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь измерить прирост производительности в моей системе с помощью сетевой карты Solarflare, установленной на моем сервере.

Сведения о сервере : Процессор Intel (R) Core (TM) i7-8086K @ 4,00ГГц (12 ядер / 8 ГБ ОЗУ)

Сеть : Адаптер Solarflare XtremeScale X2522 (10G)

Я написал простую программу сервер / клиент TCP / IP на C ++,Сервер / Клиент оба принимают два входа, а именно.Размер буфера и имя интерфейса.Используя 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.

Для измерения задержки я использовал временную метку хронографа в микросекундах до и после отправки 10000000 сообщений от клиента размером 2048.

Я связываю сокет с интерфейсом solarflare, используя SO_BINDTODEVICE +, используя следующие командыдля запуска клиент-серверных программ:

onload ./client (buf_size) (имя_интерфейса_solarflare)

onload ./server (buf_size) (interface_name_solarflare)

и для сравнительного анализа без загрузки:

. / Client (buf_size) (имя_интерфейса)

. / Server (buf_size) (имя_интерфейса)

Я могу наблюдать, что задержка в случаенагрузка выше, чем без нагрузки.Я пробовал также изменять размер буфера.Это только время отправки.

Мой пример показывает микросекунды:

enter image description here

Может кто-нибудь подсказать мне, что я могу делать неправильноВот?Я новичок в использовании OpenOnLoad.

Примечание: я не использовал никаких других параметров setsockopt в своих клиент-серверных программах.

Заранее спасибо.:)

1 Ответ

0 голосов
/ 20 августа 2019

Я думаю, что вы можете создать отдельные пространства имен для клиента и сервера и попробовать тест (в случае, если у вас нет двух систем)

...