设计性能良好系统的指导思想


规则1:CPU速度比网络速度更加重要

简而言之,如果将你的CPU的速度加快一倍,那么你通常可以获得接近两倍的吞吐量。仅仅将网络的容量加倍通常没有效果,因为瓶颈一般在主机上。

规则2:减少分组的数量可以减少软件的开销

每一个到来的分组都会引发一个中断。在现代的流水线方式的处理器上,每个中断都会打断CPU流水线、干扰缓存的工作、要求改变内存管理环境,并且强迫保存相当数量的CPU寄存器。因此,在发送数据时将TPDU的数量减少n倍,则中断数和分组开销也相应减少n倍。

规则3:是环境的切换次数最少

环境切换(比如从内核模式切换到用户模式)对于性能有严重的影响。如同中断一样,他们也具有一样的坏特性,最糟糕的是导致原谅大量的缓存无法命中。通过以下的方法可以减少环境切换:让发送数据的库过程在内部建立一套缓冲机制,直到有了相当的数量的数据之后才真正调用发送过程。类似地,在接收端,进来的小TPDU应该被收集起来,然后再成批地而不是单独地传递给用户,这样可以使环境的切换次数尽可能减少到最少。最好的情况是,一个进来的分组会导致从用户模式切换到内核模式,然后再切换到接收进程,并将心到达的数据交给它。

规则4:使复制操作的次数减少到最少

比多次切换更糟糕的是多次的复制操作。对于一个新到达的分组,在提取它的TPDU之前对该分组执行了3次或者4次的复制操作。当网络的接口卡将一个分组接收到专门的卡上硬件缓冲区之后,该分组通常需要被复制到内核缓存区中,在内核中,它又被复制到网络缓冲区中,然后复制到传输层缓冲区中,最后被复制到接收应用进程中。一个精巧的操作系统每次会复制一个字,但是在常见的做法中,每个字大约要求5条指令(加载、保存、索引寄存器递增、测试数据末尾和一个条件分支)。

规则5:你可以购买更多的带宽,但无法要求更低的延迟

接下来的三条规则涉及到通信,而不再是协议处理。第一条规则是:如果你想要更多的带宽,那么你直接购买带宽即可,但这样做并不能降低延迟。如果想要缩短延迟,则必须改进协议软件、操作系统或者网络接口。即使所有这些都做到的话,如果瓶颈是传输时间的话,则延迟还是无法降下来的。

规则6:应该想办法避免拥塞,而不是从拥塞中恢复

“一分预防胜过十二分的治疗”。当一个网络拥塞的时候,分组会丢失,带宽会被浪费,传输过程中引入无用的延迟,等等。从拥塞中恢复过来并不容易,需要时间和耐心。最好的作法就是避免拥塞,这就像是打疫苗一样。

规则7:避免超时

定时器在网络中是必要的,但是它们应该尽量少用,而且应该尽量少发生。当一个定时器到期的时候,通常需要重复执行某一个动作。如果确实需要重复执行这个动作,则执行这个动作;否则,不必要的重复就是一种浪费了。




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值