元宇宙织梦网(区块链大数据 心想梦成:吃饭赚钱 睡觉赚钱 做梦赚钱)

 找回密码
 立即注册

QQ登录

只需一步,快速开始

社区广播台

查看: 738|回复: 0

【一五一十】EOS的CPU/带宽恢复周期是多久?

[复制链接]
发表于 2018-6-24 02:39:11 | 显示全部楼层 |阅读模式

前面我们了解到CPU跟带宽是具有恢复周期的,但是,多久才能恢复?为什么我等了一周都还是老样子呢?

这篇文章简单聊一下CPU和带宽恢复的问题。需要特别说明的是,因为EOS的资源模型涉及面甚广,复杂度也高,所以,我们在这系列文章之中会时不时回来更新对于资源模型的认知。在跟许多程序员朋友交流的过程中,得到了许多的启发,也会不定时更新。

我所说的可能并不正确,只是抛砖引玉,将我目前的一些认知写下来,跟对EOS研究感兴趣的朋友一起探讨。

24小时,cpu跟带宽资源即可恢复

先上结论,后面我们再来结合例子解释:

  • 账号的CPU跟带宽资源的使用量,不会自动更新。
  • 只有新发起一笔交易时,才更新使用量的数据。
  • CPU跟带宽资源用掉之后,恢复周期是24小时。
  • 如果原先资源已经完全耗尽,则无法发起新的交易。
  • 新交易完成后,如果距离上次操作已经间隔了24个小时,则cpu跟带宽的使用量,只是本次的使用量。
数据的惰性更新

拿我的一个账号来做例子:

今天早上,账号的显示状态:

可以看到,其中的cpu跟带宽资源的已经占用情况。

我接着转了一笔账, 向另外一个账号转了0.001 EOS。

转账之后,你可以注意到下图中CPU跟带宽的变化,是不是很奇怪:为什么居然变少了?

这是因为,账号使用资源的记录,不会自动更新。而是在下一笔交易的时候,才会更新数据。

我上一笔交易是两天前。所以,今天新发起了一笔交易的时候,系统进行了如下的过程:

1. 计算资源限制

图一中,是我发起交易之前的资源占用状态。我们称之为:旧记录。
图三中,是我发起交易之后的资源占用状态,称之为:新记录。

在我新发起转账交易的时候,系统会先根据数据表中已有的记录(旧记录),再加上新增交易的资源占用情况,如果超过了系统分配给你的总数额(比如,cpu使用的时间,或者带宽资源的字节数),则这表交易会被拦截,系统会提示资源不足。

如果,新交易的消耗资源量 + 旧记录(即上次交易之后所记录下来的资源使用量) <= 系统分配的资源总量,那么,这笔交易就可以顺利进行。

我们继续。

2. 资源使用量的更新

如果交易间隔上一次操作已经间隔了24个小时以上,那么,在发起新的这笔交易时候,cpu跟带宽的资源量更新为:

新记录 = 0 + 本次资源的消耗量

比如说,本次操作距离之前的记录已经过了24小时,本笔交易占用了1kb的带宽,和0.05ms的cpu资源,那么,转账成功后,资源使用记录会变更为:

cpu用量 = 0.05 ms,即本次资源的消耗量
带宽用量 = 1kb,即本次操作的带宽耗用量

虽然cpu跟带宽资源,在操作完成之后,节点就不需要再继续占用该部分资源了,但是仍然会记录下来,这是为了限制每个账号的可用资源量,保证系统的稳定。

3. 24小时内的操作

上面说到的是24小时之后的操作,那么,如果本次操作距离上次操作不足24小时呢?

假设,在23个小时前,带宽的使用量为240Kb,那么,在第23个小时的时候,我更新了一笔操作,占用了1kb的带宽资源,那么,新交易执行完毕之后,带宽资源的使用量会更新为:

(1-23/24)* 240kb + 1kb

前面部分为原先资源的使用量在更新之后的记录,后面的1kb,是本次操作所占用的资源量。

那么,在我新发起了这笔操作之后,就显示为: 11kb了。

4. 总结

如果只需要记住一点,就请记住:

cpu跟带宽的占用数据,只有在新发起一笔交易之后才会更新。时间窗口是24小时,即,相隔24小时之后,cpu跟带宽就会完全恢复了。但是,只有你新发起一笔操作, 才会恢复。

200227vbiiuzi73h4fibf3.jpg
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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