- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一个大的RPC需要被拆分成多个信息包,是否每个信包都要确认。例如一个客户要向文件服务器写入一个4K的数据块。但是系统能处理的信包最大为lK。一种策略称为停等协议,客户进程先发送lK长的信包0后,等侍服务器的确认,然后,客户再发送下一个lK长的信包,等待下一个确认。。。 另一种策略叫爆发协议。是客户进程尽快将所有的信包发送完,当所有信包到达服务器后,服务器发回确认消息。 确认 这两种协议的性质有很大的不同。在停等协议中,如一个信包被破坏或丢失,客户不可能收到确认,于是重新发送该信包。在爆发协议中,如果信包l丢失而信包2随后正确到达,服务器会面临选择。服务器可以丢弃收到的信包,等客户计时器超时后重发整条消息。或将0、2这两个正确到达的信包放入缓冲区,等待信包3正确到达后,客户指明重新发送信包1,这种技术叫做选择重发。停等协议和丢弃所有信包在发生错误时都易于实现。有选择重发策略需要大量的管理工作,但使用了较少网络带宽。一般可靠性高的局域网,几乎不会有信包丢失,因此使用有选择重发得不偿失。对于广域网而言,使用有选择重发更为合适。 当接收者不能接收到来的信包时就出现了一个称作超限的错误,该信包随之丢失。这种错误更为严重。以停等方式发送不会出现超限错误。在爆发协议中,它明显比停等协议高效得多,但也可能会出现超限错误。 一方面,如果这个超限错误是由于芯片处理中断而暂时无法接收信包而引起的,那么,发送者可在发送两个信包之间加入一段延迟时间,使得芯片能在这个时间间隔内从中断返回到接收状态。另一方面,若超限错误是出于芯片的缓冲区不够而引起的,那么如果缓冲区容量为n个信包,则可在发送n个信包后留一个间隙,或是在发出n个信包后,得到一个确认后再发送后面的信包。 超限错误 协议包括请求、应答、确认。确认用来告诉服务器应答已经安全到达客户,可以将之丢弃了。现在假设确认在传送过程中丢失了,那么服务器会保留这个应答,但是对客户来说这个协议已经完成,不再计时和等待信包。 我们可以修改协议,让确认消息再被确认一次,这种做法增加复杂性和额外开销,得不偿失。实际上,只需在服务器上设置一个计时器,在应答发送后计时,计时到后,不论客户是否收到应答,服务器都将应答丢弃,或者在收到一确认后将应答丢弃。当然,若收到客户的新的请求时,也可以认为应答是到达了,将应答丢弃。 确认的确认 关键路径 每个RPC执行的一系列指令顺序称为关键路径。客户首先调用客户存根,接着激活客户内核陷阱中断,发送消息到服务器的内核,同时引起服务器内核中断,最后消息经服务器存根送至服务器进程。它执行操作并返回结果。 在关键路径中的什么地方耗时最多?如果知道问题出在哪里,就可以想办法减少时耗。 (图2-24 固定的头信息 )在无数据RPC中,耗时主要在信包到来时服务器内核的现场转换、服务器的中断例程以及将信包传送到接口。在有数据 RPC中,数据在以太网上传送时耗时最多,其次是将信包送入和移出内部接口响耗时。 忠告:建议避免使用离奇的硬件。其次,UDP协议有不足,UDP头字段中的校验和很耗时,有些得不偿失,一个简单的用户自定义的RPC协议将会工作得更好一些。最后,让服务器存根用忙等待而不是睡眠将大大减少2-24(a)中耗时最多的那一步(第 13步)的操作时间。 在RPC中从客户到服务器的14步:(1)调用存根(2)获得消息缓冲区(3)组装参数(4)填入头信息(5)计算UDP校验和(6)陷阱内核(7)传送请求包(8)通过QBus移动信包到控制者(9)以太网传输时间(10)从控制者获得信息(11)中断服务例程(12)计算UDP校验和(13)切换到用户空间(14)服务器存根代码 图2-24 RPC关键路径 (a)空的RPC (b)共有1440字节数组作为参数的RPC 拷贝(copying) 一个与RPC执行时间密切相关的问题是拷贝。根据硬件、软件和调用类型的不同,消息可能需要拷贝一次到八次不等。 最好的情况:接口芯片支持DMA,它将消息直接从客户存根取到网上(拷贝1),并且实时地存放到服务器内核的存储区。内核检查该信包,并且包含它的页映射到服务器进程的地址空间。如果不允许做该映射,那么内核将信包拷贝到服务器存根(拷贝2)。 最坏的情况:内核将消息从客户存根拷贝到内核缓冲区(拷贝1)。内核拷贝消息到接口芯片的硬件缓冲区(拷贝2)。硬件启动,消息经网络传送到服务器接口芯片的缓冲区(拷贝3)。服务器内核将消息拷贝到内核缓冲区(拷贝4)。最后,消息从内核的缓冲区传送到服务器存根(拷贝5)。此外,如果此调用含有一个大的值参数组时,那么还需另外三步拷贝:将数组拷入客户进程的堆栈以调用客户存根;客户存根组装时,将数组从堆栈拷贝
文档评论(0)