Производительность удаленного вызова процедур (RPC) в локальной сети
Мы используем базу данных, в которой есть отдельные клиентские и серверные программы, и они взаимодействуют друг с другом с помощью RPC. У нас есть один компьютер под управлением Windows Server 2003 SP2 и шесть рабочих станций под управлением Windows 7 Pro 32bit. Сеть представляет собой простую сеть со скоростью 100 Мбит / с с одним сетевым коммутатором.
Серверный компьютер и две рабочие станции имеют материнские платы Gigabyte G31M-ES2L, в которые встроены сетевые контроллеры Atheros. Другие рабочие станции имеют материнские платы Gigabyte H61MA-D2V, в которые встроены сетевые контроллеры Realtek.
Мы обнаруживаем, что производительность базы данных очень хорошая для компьютеров с сетевыми картами Atheros, но очень низкая для компьютеров с сетевыми картами Realtek.
Думая, что проблема связана с самой программой базы данных, я решил проверить производительность протокола RPC с помощью программы RpcPing.exe.
Я использовал следующую команду для определения времени выполнения 1000 RPC на различных компьютерах в сети:
rpcping -u 10 -a connect -s [ip address] -i 1000
Мои результаты в среднем таковы:
Atheros для любого Atheros: 200-250 мс Atheros для любого Realtek: 800-1000 мс Realtek для любого Atheros: 800-1000 мс Realtek для любого Realtek: 1100-1200 мс
Результаты одинаковы, независимо от того, является ли операционная система Windows Server 2003 или Windows 7.
В качестве теста я установил Windows XP на одну из плат с сетевым адаптером Realtek и обнаружил, что я получаю 200-250 мсек, взаимодействующих с любым NIC Atheros, и 800-1000 мсек, связывающихся с любым компьютером Windows 7 с сетевым адаптером Realtek. Я также протестировал базовую установку Windows 7, просто чтобы убедиться, что никакие программы не мешают ей, и результаты были как обычно плохими.
Я попробовал последние драйверы NIC, а также несколько более ранних версий и исключил любые физические проблемы с сетью. Я также проверил это в других сетях и иногда нахожу результаты, аналогичные моим. Конечно, не имеет значения, мегабитная или гигабитная сеть.
Поэтому, пожалуйста, кто-нибудь может объяснить, почему производительность RPC так низка для Windows 7 с этими сетевыми платами чипсетов Realtek?
1 ответ
Я отправил письмо в Realtek более недели назад, но не ожидал ответа. Удивительно, но они только что вернулись ко мне. Они попросили меня установить драйвер Windows XP на Windows 7. Это устранило проблему производительности RPC, но нарушило доступ в Интернет.
Затем они попросили меня переустановить драйвер Windows 7 и попробовать отключить "Прерывание модерации" в дополнительных настройках на странице свойств сетевой платы. Это исправлено!
Очевидно, отключение "модерации прерываний" повышает производительность вашей сетевой карты за счет дополнительной загрузки ЦП.
Я предполагаю, что, должно быть, пропустил этот параметр, когда проходил тестирование каждого из них по очереди, или, возможно, определенная комбинация этих параметров приводит к тому, что отключение "модерации прерываний" не дает никакого эффекта. Независимо от того, это отсортировано сейчас.
Интересно, что в чипсетах Atheros этот параметр включен, но он не страдает от проблемы производительности RPC.
Спасибо тем, кто ответил. Я ценю, что вы нашли время, чтобы предложить предложения.