Я пытаюсь измерить прирост производительности в моей системе с помощью сетевой карты 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](https://i.stack.imgur.com/D9jdN.png)
Может кто-нибудь подсказать мне, что я могу делать неправильноВот?Я новичок в использовании OpenOnLoad.
Примечание: я не использовал никаких других параметров setsockopt в своих клиент-серверных программах.
Заранее спасибо.:)