PCIe DMA с использованием mem=XXX замедление выделения, проблема с кредитом управления потоком
Я пытаюсь DMA из FPGA на хост-ПК (CentOS 6.9, ядро 2.6.32) памяти DDR4 с использованием интерфейса обхода дескриптора (без Scatter/Gather) и PCIe 3.0 x8.
Я выделил 240 ГБ ОЗУ, используя параметр загрузки mem=16384 МБ (256 ГБ общего ОЗУ). Я установил адрес DMA на 0x400000000 и увеличил его на размер полезной нагрузки (256 байт) для каждого дескриптора.
То, что я вижу после ~50-60 КБ, значительно замедляет / замедляет передачу из-за отсутствия получения кредита управления потоком. Таким образом, в начале передачи я могу отправлять данные со скоростью 6+ ГБ / с, но через некоторое время они замедляются до 100 МБ / с.
В чем может быть проблема? Это из-за того, что память не была правильно распределена для передачи DMA? Это просто то, что я должен принять во внимание для моего дизайна, добавив троттлинг в моей логике ПЛИС? Это не кажется правильным. Я только пытаюсь передавать 2 ГБ / с непрерывных данных, поэтому я думаю, что достаточно пропускной способности.