RTOS相对延时和绝对延时的区别
以实际代码为例说明:一个任务中,添加一个10ms系统延时,然后,在执行任务(耗时1ms左右,例子以延时代替) 。
相对延时代码:
绝对延时代码:
说明: 1. TestDelay这个延时函数仅仅用于测试(延时1ms),用于代替采集、算法、发送等耗时时间。
2. 两个代码唯一区别在于系统延时不同,一个vTaskDelay(10);,一个vTaskDelayUntil(&xLastWakeTime, 10);
3. 系统时钟频率为1000,也就是上面系统延时10个滴答,即10ms。
看到代码,你想到了他们输出结果的差异吗? 来看下结果的差异:用PA0这个引脚输出的高低电平,得出延时时间。
相对延时结果:
绝对延时结果: 结果为: 相对延时的周期为系统延时10ms + 固定时间交易交易教程 执行任务1ms的时间,总共11ms时间。绝对延时的周期即为10ms时间.
换一种方式看区别 固定时间交易交易教程
如果上面的区别还没明白,再来讲一个更容易理解的区别,通过文字 + 任务执行图来说明。
1.相对延时 先看任务执行图,按照上面代码的方式呈现: 这里会牵涉到操作系统任务切换、高优先级任务抢占等一些原理,若不了解,请转移直到了解再回来。
上电,TEST任务进入延时(阻塞)状态,此时系统执行其他就绪任务。FreeRTOS内核会周期性的检查TEST任务的阻塞是否达到,如果阻塞时间达到,则将TEST任务设置为就绪状态,如果就绪任务中TEST任务的优先级最高,则会抢占CPU,再次执行任务主体代码,不断循环。
TEST任务每次系统延时都是从调用延时函数vTaskDelay()开始算起的,所以叫相对延时。
从上图可以看出: 如果执行TEST任务的过程中发生中断,或者具有更高优先级的任务抢占了,那么TEST任务执行的周期就会变长,所以使用相对延时函数vTaskDelay(),不能周期性的执行TEST任务。
2.绝对延时 代码中定义的变量xLastWakeTime,其实是用来保存上一次的系统计数器值(方便检测下一个延时时间是否到来)。
和上面相对延时程序执行图比较,可以看出,系统延时的时间包含了程序执行的时间。即时中途有中断,或更高优先级任务打断,不会影响下一次执行的时间(也就是这个周期不会变,当然,打断时间不能超过系统延时值)。
提示: 图片中添加了一段话:一般来说,程序执行时间要小于总间隔时间(10ms)。
如果打断时间太长,回来之后延时都超过了,则会立马执行程序,不会再延时(任务不会再阻塞延时)。
●专栏《嵌入式工具 》
●专栏《嵌入式开发》
●专栏《Keil教程》
●嵌入式专栏精选教程
关注公众号 回复“ 加群 ”按规则加入技术交流群,回复“ 1024 ”查看更多内容。
点击“ 阅读原文 ”查看更多分享。
免责声明: 该内容由专栏作者授权发布或转载自其他媒体,目的在于传递更多信息,并不代表本网赞同其观点,本站亦不保证或承诺内容真实性等。如若文章内容侵犯您的权益,请及时联系本站删除。侵权投诉联系: [email protected] !
a16z:能否公平准确地评估一条链的性能?
PA观察 |2022-08-11 8:17
本文来自 a16z ,原文作者:Joseph 固定时间交易交易教程 Bonneau,由 Odaily 星球日报译者 Katie 辜编译。
性能和可扩展性是加密领域备受讨论的挑战,与 L1 项目和 L2 解决方案有关。然而,我们没有标准化的指标或基准。数据报告的方式往往不一致且不完整,这使得准确比较项目变得困难,并常常模糊了实践中最重要的内容。
可扩展性 vs. 性能
区别很重要:如果定义正确,许多提高性能的方法根本不能提高可扩展性。一个简单的例子是使用更有效的数字签名方案,例如 固定时间交易交易教程 BLS 签名,其大小大约是 Schnorr 或 ECDSA 签名的一半。如果比特币从 ECDSA 切换到 BLS,每个区块的交易数量可能会增加 20-30%,一夜之间性能就会提高。但我们只能这样做一次——没有比这更节省空间的签名方案可以切换(BLS 签名也可以聚合从而节省更多空间,但这是另一个一次性的技巧)。
理解这种区别还有助于避免在语句中发现的常见类别错误,比如“区块链 X 是高度可扩展的,它每秒可以处理 Y 个交易”。第二种说法可能令人印象深刻,但它是一个性能指标,而不是可扩展性指标,并不是指通过添加资源来提高性能的能力。
可扩展性本质上要求利用并行性。在区块链空间中,L1 扩展似乎需要 分叉 或类似于分叉的东西。分叉的基本概念是将状态分割成块,以便不同的验证器可以独立处理,与可扩展性的定义非常匹配。在 L2 还有更多的选项,允许添加并行处理,包括链下通道、Rollup 服务器和侧链。
延迟 vs. 吞吐量
通常,区块链系统性能是通过两个维度进行评估的,即延迟和吞吐量。延迟度量确认单个交易的速度,而吞吐量度量随着时间的推移交易的总速率。这些轴既适用于 L1 和 L2 系统,也适用于许多其他类型的计算机系统(如数据库查询引擎和 web 服务器)。
测量延迟的挑战
以验证器为中心的方法在实践中忽略了一些重要的事情。首先,它忽略了点对点网络上的延迟(从客户端广播一个交易到大多数节点听到它需要多长时间?)和客户端延迟(在客户端的本地机器上准备一个交易需要多长时间?)客户端延迟可能性非常小,对于签署以太坊支付等简单的交易来说是可以预测的,但对于更复杂的情况,如证明屏蔽的 Zcash 交易是正确的,则可能非常重要。
延迟是一个分布状态,而不是一个数字。
网络研究界早就明白这一点。特别强调的是分布的“长尾”,因为即使 0.1% 的交易(或 web 服务器查询)的高延迟也会严重影响最终用户。
批处理:大多数系统以某种方式将交易批处理,例如,在大多数 L1 系统上将交易批处理到区块中。这将导致可变的延迟,因为一些交易将不得不等待,直到批处理填满。其他人可能会幸运地最后加入。这些交易立即得到确认,并且不会经历任何额外的延迟。
可变拥塞:大多数系统都会出现拥塞,这意味着发布的交易比系统能够立即处理的交易要多。当交易在不可预测的时间进行广播时,或者当新交易在一天或一周内的速度发生变化时,或者在对像热门 NFT 启动这样的外部事件时响应,拥塞的程度会发生变化。
共识层差异:在 L1 确认交易通常需要一组分布式节点来达成对一个区块的共识,这可能会增加可变的延迟,无论拥塞情况如何。工作量证明系统在不可预测的时间找到区块。 PoS 系统还可以添加各种延迟(例如,如果在线节点数量不足,不能在一轮中组成一个委员会,或者如果需要改变观点以应对领导者的崩溃)。
关于延迟的声明应该显示确认时间的分布,而不是像平均值或中位数这样的单个数字。
支付渠道网络(如 闪电网络 )就是一个很好的例子。这是一个经典的L2扩展解决方案,这些网络大多数时候提供非常快的支付确认,但偶尔他们需要通道重置,这可能会增加延迟的数量级。
即使我们对确切的延迟分布有很好的统计,它们也可能会随着系统和系统需求的变化而变化。另外,如何比较相互竞争的系统之间的延迟分布也并不总是很清楚。例如,假设一个系统确认的交易延迟均匀分布在 1 到 2 分钟之间(平均和中位数为 90 秒)。如果一个竞争系统在 1 分钟内准确确认 95% 的交易,而在 11 分钟内确认另外5%的交易(平均 90 秒,中位数 60 秒),那么哪个系统更好?答案可能是,有些应用程序更喜欢前者,有些则更喜欢后者。
延迟是复杂的。报告的数据越多越好。理想情况下,应该在不同的拥塞条件下测量完整的延迟分布。将延迟分解为不同的组件(本地、网络、批处理、共识延迟)也是有帮助的。
测量吞吐量的挑战
不是所有的交易都是平等的。
这在以太坊中明显是正确的,在以太坊中,交易可以包括任意代码和任意修改状态。以太坊中的 gas 概念用于量化(并收取费用)交易正在进行的总体工作量,但这与 EVM 执行环境高度相关。没有简单的方法来比较一组 EVM 交易与一组使用 BPF 环境的 Solana 交易所做的工作总量。将两者与一组比特币交易进行比较同样令人担忧。
更简单的执行层,例如只支持支付交易的 Rollup 服务器,避免了量化计算的困难。即使在这种情况下,支付也会因投入和产出的数量而变化。支付通道交易可能因所需的“跳跃次数”而异,这将影响吞吐量。Rollup 服务器吞吐量取决于将一批交易“联网”到更小的汇总更改集的程度。
吞吐量声明需要仔细解释交易工作负载和验证器的数量(它们的数量、实现和网络连接)。在没有任何明确标准的情况下,来自以太坊等流行网络的历史工作量就足够了。
延迟和吞吐量权衡
交易费用
特别是上面的第 3 点和第 4 点是区块链系统设计的基本问题,但是我们对它们都缺乏良好的原则。相对于交易费用,我们对给予矿工以通货膨胀奖励的好处和坏处有一定的了解。然而,尽管有许多关于区块链共识协议的经济分析,我们仍然没有一个被广泛接受的模型来说明需要多少收入给验证器。今天,大多数系统都建立在一个有根据的猜测中,即有多少收入足以让验证器诚实地工作,而不会扼杀系统的实际使用。在简化的模型中,可以看出,安装 51% 攻击的成本与验证程序的回报成正比。
提高攻击成本是一件好事,但我们也不知道多少安全措施才“足够”。想象一下,你正在考虑去两个游乐园。其中一辆声称在车辆维护上比另一辆少花 50% 的钱。去这个公园是个好主意吗?这可能是因为他们更有效率,用更少的钱获得了同等的安全。另一种可能是花费超过所需的费用来保证游乐设施的安全,而没有任何好处。但也可能是第一个公园很危险。区块链系统也类似。一旦剔除吞吐量,费用较低的区块链的费用较低,因为它们对验证者的奖励(因此激励)较少。我们现在没有好的工具来评估这是否可性,或者它是否会使系统容易受到攻击。总而言之:
固定时间交易交易教程
手把手带你交互 NFT 平台 SudoSwap
Sudoswap 是由 0xmons 发布的场外交易平台(OTC),V1版本支持 ERC20、ERC721、ERC1155 等代币任意组合交易,用户可以自定义订单到期时间和指定任意或特定买家进行交易。在V2版本里, sudoswap推出的针对 NFT 的自动做市商
Automated Market Maker, AMM)系统 。SudoAMM 是一种类似于 Uniswap v3 的集中流动性 AMM,流动性提供者可以自由选择一个价格范围来提供NFT流动性,提高了资本效率
2022年最常见赚钱的10大副业介绍!赶紧收藏
固定时间交易交易教程 固定时间交易交易教程 百度搜索‘翔云宝盒’ 了解更多不为人知的互联网掘金技术!
百度搜索‘翔云宝盒’ 了解更多不为人知的互联网掘金技术!
翔云宝盒是一款全网资源整合型的软件,里面有每日福利与新手推荐两个适合新手的栏目,里面都是靠谱的任务,每天搞个几十上百很轻松,而且不仅仅能够赚钱,还可以学习网赚知识,比如说建站技巧、SEO优化、虚拟资源、知识付费等等。这个软件是一款任务项目发布类的软件,每个项目的详细操作都是直接发表到软件上的。
百度搜索‘翔云宝盒’ 了解更多不为人知的互联网掘金技术!