一个工程问题
网络中的数据都以数据包的形式传输,我开发了一个数据包检查软件对每个数据包检查,这个软件在网络流量较大时会出现一些数据包来不及检查的现象,这些数据包其所占总数据包比例称为丢包率。
假如当网络流量超过10Mbps时该软件会出现丢包(来不及检查),我设计了一种新方法,可以识别出占总数据量80%的较安全的数据包,当发现丢包时可以立即切换成另一种工作模式,即对占总数据量80%的较安全的数据包不检查,从而降低该软件承受的检查压力,如下图所示,例如在正常工作状态下(全检查)当网络流量到10M时就会出现丢包,如果切换成部分检查的工作方式时,在网络流量到40M时才会出现丢包。
但是这样设计有个问题,就是一当出现丢包时就切换工作方式,对所有较安全的数据包不检查,那也不好,该软件就浪费了一些处理资源。而浪费的这些处理资源如果能检查较安全的数据包最好。
我希望该软件在不丢包的前提下,尽可能多的检测数据包(包括较安全的),所以在10M到40M之间应对所有非安全数据包检查,并且能尽可能多的检测较安全的数据包,那么应该在某个流量状态下检查多少较安全数据包好呢?应依照概率还是什么数学方法来解决呢?请各位高手帮我想想,最好能提供一个数学公式,多谢啦!!!
[解决办法]
用队列,一个安全数据包队列,一个非安全数据包队列,一个结果队列;
接收过程
每收到一个数据包,设的超时时间后根据类型加到安全或非安全的队列中,等待、一直到该包出现在结果队列中;
检查过程(不停循环运行)
首先将安全和非安全队列中超时的包标记为超时后移动到结果队列;
按照非安全队列优先与安全队列的规则取得一个报进行检查,设定检查结果后移动到结果队列。
[解决办法]
我们把问题换一种说法,争取能从工程问题变成应用题。
有一个海关设置了安全检察,就是建立了一个安全门,但是每小时只能通过10个人,(如果超过了10个人/小时,就会出现某种后果,可能较小,只是有人在排队中情绪不佳,也可能很严重,就是有人会趁乱混过去,然后毁灭世界。但是后果是未知的,所以我们依据严重后果来吧,就是不能丢包。)而后来要求通过人多了,可能是30,或许是40。于是聪明的ztt918zx提议,在安全门之前加一道门,来检查证件(有百分之八十的人都有证件,他们都是大概率的良民),如果有证件,那么就从绿色通道“嗖”地一下过去了。检查证件的速度比安全门的通过速度可快多了,但是具体数值是未知的。有了这种新方法,每小时可以过40个人了。
我们先算一下检查证件的速度,已知过安全门1个人要6分钟,革新以后,在1小时以内,通过了40人,其中32个有证件,8个人要通过安全门,这8个人要用48分钟,还有12分钟或许就是40人用来查证件的时间,如果真是这样的,那么查证件的速度是200人/小时。
有了新方法,终于使速度提升了4倍,迎来了幸福的生活,但是平稳的日子总是短暂的。BOSS又发现了新问题,就是管理安全门的人员太清闲了,公司绝不容许任何人有空闲来思考问题。于是对于占8成的大概率良民,要实行抽测制度,被抽中的人,还是要通过安全门的。现在问抽中的比例应该是多少呢?设这个比例是x,对于m个人,要用多少时间呢?首先是m个人查证的时间(假设抽签等不用时间),是m/200小时;然后是通过安全门的时间,需要通过安全门的人数是0.2m+0.8mx。所以总共用0.005m+0.02m+0.08mx小时,所以x应设定为:12.5/m-0.3125,其中m为每小时需要通过的人数。可以看到:对应于10、20、30和40对应中签率的值是0.94、0.31、0.1和0。
上面的模型中是有一些假定的,但愿是符合实际的。