7

Я использую psping для измерения полосы пропускания на локальном хосте на разных компьютерах: ноутбуках, домашних компьютерах и серверах. Все они получают от 100 до 200 МБ / с, но мой PowerPc на работе удается получить до 800 МБ / с.

Что может вызвать эти огромные различия, общаясь с собой через локальный хост? PowerPc превосходит все другие протестированные мной устройства с коэффициентом от 4 до 8.

Конфигурация PowerPc

  • Windows 7
  • Процессор Intel(R) Xeon® (E3-1240 v3 @ 3,40 ГГц) [Семейство 6, модель 60, степпинг 3]
  • 3,78 GFLOPS/ ядро
  • Symantec SEP

Конфигурация домашнего компьютера

  • Windows 8.1
  • Процессор Intel(R) Core(TM) i7 920 с частотой 2,67 ГГц [Intel64 Family 6, модель 26, степпинг 5] 4
  • 2,64 ГФЛОПС / ядро
  • BitDefender

команда psping

psping -4 -b -l 8k -n 20000 localhost:1234

Несколько вопросов, которые я ожидаю получить и которые хотелось бы обсудить заранее

Я могу быть далеко, но это показывает вам мое текущее понимание вещей, не стесняйтесь, чтобы привести меня в порядок.
  1. Антивирус связан
    Я отключил антивирусный компонент моего домашнего компьютера без каких-либо заметных различий. Кроме того, я перехватил трассировку WPA (XperfScripts), и модули, которые больше всего связаны с процессором, это ntoskrnl.exe, netio.sys, tcpip.sys, ndis.sys и afd.sys. Первый AV-модуль, который входит в картину, связанную с ЦП, - это avcuf32.dll, на который приходится 0,17% от общего ЦП.

  2. Localhost против 127.0.0.1
    Я пробовал оба и получил одинаковые результаты на всех протестированных компьютерах.

  3. Современные драйверы
    Драйверы на моем домашнем компьютере обновлены. Драйверы на PowerPc управляются нашими ИТ-специалистами и несколько отстают, но не намного (в любом случае PowerPc в 4 раза быстрее в тестах)

  4. netsh int tcp show global
    Есть некоторые различия между обоими ПК. Состояние Chimney Offload и NetDMA на моем домашнем компьютере отключены, а на PowerPc они включены автоматически.
    Мое сетевое фу недостаточно хорошо, чтобы знать, может ли это объяснить различия, но, читая эту тему, я сомневаюсь, что это так.


редактировать

RAM детали PowerPC

  capacity speed memorytype totalwidth datawidth typedetail
  -------- ----- ---------- ---------- --------- ----------
4294967296  1600          0         64        64        128
4294967296  1600          0         64        64        128
4294967296  1600          0         64        64        128
4294967296  1600          0         64        64        128

RAM детали Домашний компьютер

    capacity speed memorytype totalwidth datawidth typedetail
  -------- ----- ---------- ---------- --------- ----------
2147483648  1333          1         72        64          2
4294967296  1333          1         72        64          2
2147483648  1333          1         72        64          2
4294967296  1333          1         72        64          2
2147483648  1333          1         72        64          2
4294967296  1333          1         72        64          2
   4194304    33         11          8         8       4096

1 ответ1

5

Я считаю, что причина того, что PowerPC в Windows 7 намного быстрее при пропускной способности обратной связи на локальном хосте, заключается в том, что он может использовать NetDMA.

Статья Microsoft NetDMA (Windows Drivers) определяет NetDMA как:

Интерфейс NetDMA предоставляет общий интерфейс для передач прямого доступа к памяти (DMA). Хотя интерфейс предназначен для копирования пакетов, полученных от высокопроизводительных сетевых интерфейсных плат (NIC), вы также можете использовать этот интерфейс для других приложений. Нет прямой связи между NetDMA и NDIS.

При использовании обратной связи localhost очевидно, что операции копирования в память являются основным фактором пропускной способности, поскольку кадры копируются из памяти исходного приложения, затем между уровнями TCP и, наконец, в память целевого приложения.

NetDMA может оказать влияние, поскольку он позволяет сетевым адаптерам передавать данные непосредственно в ваше приложение, возможно, таким образом уменьшая количество копий памяти даже для обычного петлевого адаптера.

Включение NetDMA может быть сделано двумя способами:

  1. Введите netsh int tcp set global netdma=enabled в командной строке (cmd), которая запускается от имени администратора, затем перезагрузите компьютер.
  2. Повторно перейдите в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters и создайте новый элемент DWORD с именем EnableTCPA со значением 1, затем перезагрузите компьютер.

Однако для включения NetDMA есть две предпосылки:

  1. Статья Microsoft Включение NetDMA имеет следующее:

NetDMA должен быть включен в BIOS перед выполнением этой процедуры. Поддержка NetDMA часто называется поддержкой IOAT.

  1. В статье Microsoft NetDMA (Windows Drivers) есть следующее примечание:

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

Собрав воедино оба эти требования, я могу рискнуть предположить, что, поскольку NetDMA является функцией BIOS, она не была реализована в UEFI, который используется в Windows 8/2012.

Поэтому Microsoft пришлось улучшить пропускную способность обратной связи на локальном хосте другим способом, особенно для использования в Hyper-V, и поэтому в Windows 8/2012 создала быструю обратную петлю TCP, определяемую как:

TCP Loopback Fast Path - это новая функция, представленная в Windows Server 2012 и Windows 8. Если вы используете интерфейс обратной связи TCP для межпроцессного взаимодействия (IPC), вы можете быть заинтересованы в улучшенной производительности, улучшенной предсказуемости и уменьшенной задержке, которую может обеспечить TCP Loopback Fast Path. Эта функция сохраняет семантику сокетов TCP и возможности платформы, включая платформу фильтрации Windows (WFP), и работает как с не виртуализированными, так и с виртуализированными экземплярами операционной системы.

Интерфейс обратной связи TCP обеспечивает простой локальный механизм IPC для процессов в одном экземпляре операционной системы, и его можно легко переключить на механизм удаленного IPC, просто изменив IP-адрес назначения.

К сожалению, Fast TCP Loopback непрозрачен, требуя, чтобы приложения выполняли системный вызов WSAIoctl на сокетах как для отправителя, так и для получателя, поэтому не обратно совместим с существующими приложениями для измерения пропускной способности, такими как PsPing и PCATTCP.

В моих собственных тестах на Windows 7 я не понимал всех загадок, связанных с NetDMA, но мне удалось кратко включить его с немедленным преимуществом удвоения пропускной способности, измеренной PsPing. Но так как NetDMA не пережил перезагрузку на этом компьютере, я не рекомендую полагаться на его пропускную способность даже на компьютерах, которые теоретически поддерживают его.

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