Я намагаюся побудувати Ethernet-канал 10 Гбіт / с між FPGA та ПК з Windows 7. Для приблизної оцінки я виміряв використання пропускної здатності посилання за допомогою Мережевої вкладки Windows Task Manager. Пізніше я виміряв пропускну здатність за допомогою Wireshark. Я роблю невеликий розрахунок, поділяючи загальну кількість байтів на відведений час (N bytes/T)*8 bits per second
.
При нижчих лінійних швидкостях (<= 5Gbps)
обидва вимірювання відповідали тісно. Однак, коли я збільшував швидкість передачі даних, скажімо, вище 5 Гбіт / с, графік у диспетчері завдань відповідно збільшується, але швидкість передачі даних, отримана Wireshark, знизилася приблизно до 2,5 до 3 Гбіт / с.
Я можу лише здогадуватися, що це проблема рівня ОС. Я розумію, що швидкість передачі даних та швидкість передачі даних - це 2 різні речі. Будь ласка, виправте мене, якщо я помиляюся.
Мої запитання:
- Де диспетчер завдань вимірює ставку ліній?
- Де Wireshark захоплює пакети?
Я читаю цю публікацію і розумію, що Wireshark захоплює пакети між драйвером NIC та більш високими шарами (я здогадуюсь, транспортний шар), але я не впевнений.
ОНОВЛЕННЯ
Я спробував перевірити монітор ресурсів. Він показує кількість байтів, переданих певній програмі (якщо я не помиляюся). Коли я передаю дані з FPGA зі швидкістю 10 Гбіт / с, монітор ресурсів показує швидкість передачі 1,26 гігабайт в секунду (10,001 гігабіт на секунду!). Це зараз мене більше бентежить.
Чому Wireshark не вистачає цих пакетів?
Детальніше та параметри NIC:
Я використовую протокол UDP. Це може бути однією з можливих причин втрати пакету зі швидкістю> 5 Гбіт / с. Пакети з FPGA мають 16060 байт (16000 байт корисного навантаження та 60 байт заголовків).
- Отримайте буфер до 60000 (макс. 65535).
- Увімкнено рамки Jumbo - 16128 (максимальне значення)
- Увімкнено RSS
- Увімкнено перевірку контрольної суми UDP та TCP
- Кількість процесорів RSS до 6 (6 фізичних ядер доступні в ПК)
- Переривання згущення 25us (Не впевнений у цьому)
Я новачок у галузі мереж. Будь-яка допомога буде дуже вдячна.