Я использую двухпортовую сетевую карту Intel x520 и x540, подключенную к серверу Dell PowerEdge. Все порты NIC могут работать на скорости 10 Гбит/с, следовательно, всего 40 Гбит/с. Система имеет 2 сокета, содержащих процессор Xeon E5-2640 v3 (микроархитектура Haswell).
Есть много проблем, с которыми я сталкиваюсь, и их можно решить с помощью бенчмаркинга PCIe и DMA. Однако я не мог найти подходящего способа сделать то же самое. Я не могу достичь пропускной способности 40 Гбит / с даже с драйвером и библиотеками на основе DPDK (с 64-байтными пакетами). Мне нужно провести эксперименты с размером 64 байта и я не могу изменить размер пакета.
Я генерирую пакеты с помощью DPDK-pktgen и подсчитываю события с помощью Intel-PCM, ./pcm-pci.x. Однако подсчет является одним из способов, в том смысле, что я подсчитываю количество событий и не могу сказать, какое максимальное количество каждого события может поддерживать система. Результаты от pcm-pci.x :
Skt PCIeRdCur RFO CRd DRd ItoM PRd WiL
0 73 M 3222 K 784 K 63 M 52 M 0 2791 K
Мои сетевые карты подключены к сокету 0, поэтому я не привожу результаты для сокета 1.
Есть ли способ сравнить шину PCIe и механизм DMA? и Есть ли способ получить точную задержку в подсистеме ввода-вывода (на каждом уровне) для обработки пакетов (нельзя использовать rdtsc() для измерения задержек на аппаратном уровне)?