Страница MSDN на Direct Cache Access (DCA), которая является частью NetDMA, утверждает

Интерфейс NetDMA не поддерживается в Windows 8 и более поздних версиях.

Так что я думаю, что и NetDMA, и DCA исчезли. Поскольку обе эти идеи были хорошими с точки зрения производительности и были относительно новыми, мой вопрос:

Кто-нибудь знает, почему MS удалила его, или почему удаление этой функции имело бы смысл?

1 ответ1

4

Согласно этому сообщению на форуме, NetDMA была удалена из Windows 8 и Server 2012/2012 R2 из-за того, что на самом деле не снижается загрузка процессора:

Джеффри Типпет [MSFT]
xxxxxx@microsoft.com


> Любая подсказка, почему эта функция не поддерживалась Win 8 на подопечных?

Я удалил NetDMA в Windows 8. Надеюсь, у меня есть немного больше, чем подсказка :)

Цель NetDMA состояла в том, чтобы уменьшить загрузку ЦП путем разгрузки memcpy в общий механизм разгрузки.

Но в сети мы склонны обрабатывать довольно маленькие буферы. Типичный сетевой буфер имеет тенденцию быть не больше чем 1500 байтов. (Да, мы можем сделать LSO много килобайт, но NetDMA была ограничена только 2 страницами памяти на транзакцию, поэтому в большинстве случаев NetDMA следует сравнивать с буфером 8 КБ.)

Который использует меньше процессора:

  1. Настройка разгрузки DMA на оборудование и продолжение, когда оборудование прерывает его завершение
  2. memcpy 1500 байт на процессоре

С более новыми центральными процессорами ответ имеет тенденцию быть # 2.

Поскольку основная цель NetDMA заключалась в том, чтобы уменьшить загрузку ЦП, а она даже не обеспечивала явного сокращения ЦП, это делает NetDMA сомнительным преимуществом. Добавьте к этому, что у него было низкое принятие (не многие поставщики внедрили провайдера NetDMA), и ценность сохранения функции не была там. Его конкурент, memcpy, проще, лучше поддерживается, его легче отлаживать, а иногда даже быстрее.

                ⋮

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .