北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
查看: 3900|回复: 0

北侠命令缓冲及动态调整机制说明

[复制链接]
发表于 2021-9-16 22:09:48 | 显示全部楼层 |阅读模式
为了最大限度利用和平衡系统资源,自本日起北侠正式启动命令缓冲机制,并对缓冲阈值进行智能动态调整。说明如下:

什么是命令缓冲机制?
  • 大家都有人多的时候系统lag的体验。为什么会lag?因为cpu性能限制,系统一秒钟内能处理的命令也有限。人多的时候,很可能某一秒来了1000条命令,系统拼了命(cpu跑到100%)也就处理了800条,那么剩下200条怎么办?先放在一个临时区域,下一秒cpu优先处理这200条,然后再处理下一秒新来的命令。这就是命令缓冲机制。
  • 那么这不是已经有命令缓冲了么?为什么还要启动?从上面的描述可以看出:1000条指令是排了一个大队,所有人的命令都在一起排着。那么这里面肯定有的人命令多,可能占了上百条,有的人少,只有不到十条。显然让不到十条的和上百条的一起排队不公平,让CPU花大量时间只为一个人服务效率也不高。那么就要修改命令缓冲,每个人自己的指令单独排一个队,给每个人的命令队列设置一个每秒处理的命令数上限,比如30。那么一秒钟内,命令不到10条的玩家肯定能得到结果,命令100条的玩家只能得到前30条的结果,后面70条还需要再等2-3秒才能有结果。如果这个玩家还不收敛,继续暴命令,那么只会越积累越多,自己卡自己,不会卡系统,也卡不了其他人。
  • 总结:命令缓冲机制兼顾了效率与公平。

命令缓冲机制是限制玩家的吗?
  • 要说明的一点是:在过去几十年里,北侠一直有一个设定:一个人一秒内的命令数如果超过30,则多出来的会被吞掉。而在新的命令缓冲机制中,这个设定被去掉了,在cpu比较空闲时,单人单秒命令数上限可以达到40、50甚至60,玩家将体验到更高的流畅性。
  • 总结:命令缓冲机制是尽量利用系统性能为玩家提高体验,只有在性能非常不足的情况下,才会将命令数上限调到比以前小,以提高整体系统性能,避免整体卡顿。并且只对暴刷命令的玩法有负面影响,负面影响也仅仅是命令延迟执行,而不是吞命令。对正常输入速度的玩家只会感觉系统更流畅。

命令缓冲机制如何生效?
  • 正常来说,玩家一般感受不到任何修改,只有在CPU非常繁忙,系统产生卡顿的时候,暴刷命令的玩家可能会看到:[命令进入缓冲]的字样,提示当前输入命令过快过多,需要等1秒钟左右才会执行此提示后面的命令。
  • 需要说明的是:这里的1秒钟,是指玩家的一个心跳,可能不是完整的一秒,也可能多于一秒。玩家心跳平均每秒产生一次,具体间隔并不均匀。所以可能产生进入缓冲之后不到1秒或者等待多于1秒才开始执行剩余命令的情况,这都是正常的。总体来说平均等待时间为1秒没有问题。


动态调整是如何调整?
  • 动态调整机制的原理是根据CPU繁忙的状况,动态调整单个玩家每秒可执行的最大指令阈值,超过此阈值则进入缓冲。目前设定为:CPU占用低于50%,每秒命令上限到60,低于65%到50,低于75%到40,低于85%到30,85%以上到22。也就是说,只有当CPU繁忙到85%以上之后,每秒可执行的命令数才会低于以前的设定,而当CPU低于75%的时候,每秒可执行命令数将超过以前设定,玩家体验更流畅。
  • 动态调整机制根据前10分钟的cpu占用统计数据,10分钟调整一次。
  • 以上设定可能随着系统运行有所调整,不再通知,但总体目标不会变,永远是尽可能利用系统资源为玩家提供更好的体验。
  • 另外,目前动态调整机制仅在主站生效,副本仍然保持固定指令上限。


玩家该如何应对?

  • 玩家需要做的就是在看到[命令进入缓冲]的提示之后,减缓命令输入速度,提高命令效率,避免持续暴刷命令导致缓冲区越积累越多最终爆掉(被清空)。


为什么明明当前每秒命令上限是50,我才输入30来个就进入缓冲了?
  • 这种情况多半是由于玩家频繁发送诸如hpbrief,response等指令,但同时屏蔽了指令回显,只让相关程序去处理,所以在屏幕上看不到。实际每秒指令数应该加上这些被屏蔽的命令。



北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-11-24 02:34 AM , Processed in 0.010054 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表