Дает ли DPDK/RDMA между двумя компьютерами задержку меньшую, чем пинг локального хоста?
Я знаю, что петлевая проверка будет проходить через сетевой стек ядра до тех пор, пока не достигнет уровня IP, включая накладные расходы на системные вызовы и некоторые накладные расходы на копирование памяти. Чтобы избежать этого, DPDK и RDMA используют разные технологии.
Допустим, у меня есть две машины, соединенные dpdk/rdma, затем я провожу тест сетевой задержки. Будет ли это быстрее, чем петлевая проверка только на одной машине? Я делаю быстрый тестping localhost
на процессоре E5-2630 v4 @ 2,20 ГГц, что в среднем составляет 0,010 мс.
У меня возник этот вопрос, когда я тестировал свой кластер ceph с использованием vstart.sh. Я хочу минимизировать задержку в сети, чтобы тщательно проанализировать, как код, связанный с OSD, влияет на задержку.
1 ответ
Судя по разговору в комментариях, настоящий вопрос заключается в следующем:Does DPDK/RDMA between 2 machines gives lower latency than localhost ping
.
[Ответ] да, вы можете добиться того же. Но есть некоторые предостережения
- ДПДК
rte_eth_tx_burst
ставьте в очередь только дескриптор пакета для DMA на PCIe для отправки трафика. На самом деле пакет не отправляется. - ДПДК
rte_eth_tx_buffer_flush
явно сбрасывает все ранее буферизованные пакеты на оборудование. - Манипулирование ICMP-запросом (буфером RX) путем изменения каждого байта обходится дорого, вместо этого выберите
rte_pktmbuf_alloc
чтобы получить mbuf и установить для ref_cnt значение 250. - подготовьте новый буфер с правильными данными полезной нагрузки Ethernet, IP и ICMP
следовательно, с правильным сетевым адаптером (который поддерживает передачу с низкой задержкой), DPDKAPIrte_eth_tx_buffer_flush и предварительно выделенным mbuf с ref_cnt, обновленным до более высокого значения, которого вы можете достичь, вы можете достичь
0.010ms
в среднем.
Примечание. Для лучшего базового уровня используйте генератор пакетов или пакет Balster, отправьте ICMP-запрос на целевой компьютер с помощью ядра и решения DPDK, чтобы сравнить реальную производительность загрузки для скорости линии, например 1%, 5%, 10%, 25%, 50%. , 75%, 100%.