注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

云水居

云在青山水在天,人在江湖不得闲

 
 
 

日志

 
 

scp的限速功能(流量控制)  

2011-09-08 09:47:30|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

查看全文


scp 的 -l 参数可以控制传输速度,如 scp -l 5000 hankjin@localhost:/tmp/10G .

scp 的限速用两个函数实现
bandwidth_limit_init()
bandwidth_limit()
第一个函数设置传输速度的阈值
第二个函数限制传输速度
循环写完1s内需要的流量数之后, 计算耗费的时间和需要的时间差, 然后动态调整下1s的流量.
这样带来两个问题:
1. 第1s内的速度较低,导致第2s的速度飙高.
2. 流量不平滑, 例如10M/s的速度, 实际在前0.1s内完成,然后剩下0.9s空闲.
在正常应用下, 这两个问题都不是问题, 也满足多数限速要求.
但是在某些条件下, 这两个问题显得scp的速度控制不够精细.

1. 如果要保证其它服务的稳定性, 这时流量控制就要保证时刻都不高于指定速度.
2. 如果流量不平滑, 也可能影响服务, 前0.1s和服务抢带宽, 后0.9s带宽空闲. 对实时性要求不高的应用没有问题, 但是在要求精度小于0.1s的服务, 这个问题也需要解决.

满足这两个条件的流量控制伪码如下:
total=0, total_time=0, last_time=0
WHILE TRUE:
  read nbyte
  total_time+=now-last_time&nb

查看全文

  评论这张
 
阅读(2906)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017