远程过程调用(RPC)在局域网中的性能

我们使用具有独立的客户端和服务器程序的数据库,并使用RPC相互通信。 我们有一台运行Windows Server 2003 SP2的计算机和六台运行Windows 7 Pro 32bit的工作站。 networking是一个简单的100Mbpsnetworking,只有一个networking交换机。

服务器电脑和两个工作站有技嘉G31M-ES2L主板集成了Atherosnetworking控制器。 其他工作站有集成了Realteknetworking控制器的技嘉H61MA-D2V主板。

我们发现使用Atheros网卡的计算机的数据库性能非常好,而使用Realtek网卡的计算机的数据库性能非常差。

认为问题是与数据库程序本身有关,我决定使用程序RpcPing.exe来testingRPC协议的性能。

我一直在使用以下命令计算在networking上的多台计算机上执行1000个RPC需要多长时间:

rpcping -u 10 -a连接-s [ip地址] -i 1000

我的结果平均如下:

Atheros任何Atheros:200-250ms Atheros任何Realtek:800-1000ms Realtek任何Atheros:800-1000ms Realtek任何Realtek:1100-1200ms

无论操作系统是Windows Server 2003还是Windows 7,结果都是一样的。

作为一项testing,我在其中一块带有Realtek网卡的主板上安装了Windows XP,发现与任何Atheros网卡都可以进行200-250毫秒的通讯,并且可以与任何带有Realtek网卡的Windows 7计算机进行800-1000毫秒的通讯。 我还testing了Windows 7的基本安装,只是为了确保没有程序干扰它,结果和往常一样糟糕。

我已经尝试了最新的网卡驱动程序以及几个较早的版本,并排除了networking的任何物理问题。 我也在其他networking上进行过testing,偶尔会发现类似的结果。 当然,如果它是一个兆位或千兆位的networking,它就没有什么区别。

所以请任何人都可以提供一个解释,说明为什么使用这些Realtek芯片组网卡的Windows 7的RPC性能很差?

我在一个星期前给瑞昱发了一封电子邮件,但从来没有预料到会有答复。 令人惊讶的是,他们刚刚回到我身边。 他们要求我在Windows 7上安装Windows XP驱动程序。这样可以解决RPC性能问题,但却打破了Internet访问。

然后,他们要求我重新安装Windows 7驱动程序,并尝试在NIC属性页的高级设置上禁用“中断pipe理”。 这个修好了!

显然,禁用“中断调整”会增加网卡的性能,但需要额外的CPU使用量。

我认为当我依次testing每一个testing时,我一定错过了这个设置,或者这些设置的某个组合可能会导致禁用“中断控制”无效。 无论如何,它现在sorting。

有趣的是,Atheros芯片组启用了此设置,但不会受到RPC性能问题的困扰。

感谢那些回答。 我感谢您花时间提供build议。