Назад | Перейти на главную страницу

Производительность удаленного вызова процедур (RPC) в локальной сети

Мы используем базу данных, в которой есть отдельные клиентские и серверные программы, и они взаимодействуют друг с другом с помощью RPC. У нас есть один компьютер с Windows Server 2003 SP2 и шесть рабочих станций с 32-разрядной Windows 7 Pro. Сеть представляет собой простую сеть 100 Мбит / с с одним сетевым коммутатором.

Серверный компьютер и две рабочие станции имеют материнские платы Gigabyte G31M-ES2L со встроенными сетевыми контроллерами Atheros. Остальные рабочие станции оснащены материнскими платами Gigabyte H61MA-D2V, в которые встроены сетевые контроллеры Realtek.

Мы обнаружили, что производительность базы данных очень хороша для компьютеров с сетевыми интерфейсами Atheros, но очень низка для компьютеров с сетевыми адаптерами Realtek.

Думая, что проблема связана с самой программой базы данных, я решил проверить производительность протокола RPC с помощью программы RpcPing.exe.

Я использовал следующую команду, чтобы определить время, необходимое для выполнения 1000 RPC для различных компьютеров в сети:

rpcping -u 10 -a connect -s [IP-адрес] -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 NIC и обнаружил, что я получу 200–250 мс при обмене данными с любой сетевой картой Atheros и 800–1000 мс при связи с любым компьютером с Windows 7 с помощью Realtek NIC. Я также протестировал базовую установку Windows 7, просто чтобы убедиться, что никакие программы не мешают ей, и результаты были такими же плохими, как обычно.

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

Так что, пожалуйста, кто-нибудь может предложить объяснение, почему производительность RPC настолько низкая для Windows 7 с этими сетевыми картами набора микросхем Realtek?

Я отправил электронное письмо в Realtek более недели назад, но так и не ожидал ответа. Удивительно, но они только что вернулись ко мне. Они попросили меня установить драйвер Windows XP на Windows 7. Это устранило проблему производительности RPC, но нарушило доступ в Интернет.

Затем они попросили меня переустановить драйвер Windows 7 и попробовать отключить «Прерывание модерации» в расширенных настройках страницы свойств сетевой карты. Это исправлено!

Очевидно, отключение «модерации прерываний» увеличивает производительность вашей сетевой карты за счет дополнительного использования ЦП.

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

Интересно то, что в чипсетах Atheros этот параметр включен, но они не страдают от проблем с производительностью RPC.

Спасибо тем, кто ответил. Спасибо, что нашли время предложить свои предложения.