Согласно этому сообщению на форуме, NetDMA была удалена из Windows 8 и Server 2012/2012 R2 из-за того, что на самом деле не снижается загрузка процессора:
Джеффри Типпет [MSFT]
xxxxxx@microsoft.com
> Любая подсказка, почему эта функция не поддерживалась Win 8 на подопечных?
Я удалил NetDMA в Windows 8. Надеюсь, у меня есть немного больше, чем подсказка :)
Цель NetDMA состояла в том, чтобы уменьшить загрузку ЦП путем разгрузки memcpy в общий механизм разгрузки.
Но в сети мы склонны обрабатывать довольно маленькие буферы. Типичный сетевой буфер имеет тенденцию быть не больше чем 1500 байтов. (Да, мы можем сделать LSO много килобайт, но NetDMA была ограничена только 2 страницами памяти на транзакцию, поэтому в большинстве случаев NetDMA следует сравнивать с буфером 8 КБ.)
Который использует меньше процессора:
- Настройка разгрузки DMA на оборудование и продолжение, когда оборудование прерывает его завершение
- memcpy 1500 байт на процессоре
С более новыми центральными процессорами ответ имеет тенденцию быть # 2.
Поскольку основная цель NetDMA заключалась в том, чтобы уменьшить загрузку ЦП, а она даже не обеспечивала явного сокращения ЦП, это делает NetDMA сомнительным преимуществом. Добавьте к этому, что у него было низкое принятие (не многие поставщики внедрили провайдера NetDMA), и ценность сохранения функции не была там. Его конкурент, memcpy, проще, лучше поддерживается, его легче отлаживать, а иногда даже быстрее.
⋮