实时系统性能测试指标及方法

一、Rhealstone
Rhealstone是系统实时性的测量基准之一,Rhealstone方法对ERTOS中六个关键操作的时间量进行测量,并将它们的加权和称为Rhealstone数。这六个时间量如下:

2.抢占时间(preemption time),即系统将控制从低优先级的任务转移到高优先级任务所花费的时间。为了对任务进行抢占,系统必须首先识别引起高优先级任务就绪的事件,比较两个任务的优先级,最后进行任务的切换,所以抢占时间中包括了任务切换时间。

3.中断延迟时间(interrupt latency time),指从中断第一条指令所持续的时间间隔.它由四部分组成,即硬件延迟部分(通常可以忽略不计)、ERTOS的关中断时间、处理器完成当前指令的时间以及中断响应周期的时间。

4.信号量混洗时间(semaphore shuffling time),指从一个任务释放信号量到另一个等待该信号量的任务被激活的时间延迟。在ERTOS中,通常有许多任务同时竞争某一共享资源,基于信号量的互斥访问保证了任一时刻只有一个任务能够访问公共资源。信号量混洗时间反映了与互斥有关的时间开销,因此也是衡量ERTOS实时性能的一个重要指标。

5.死锁解除时间(deadlock breaking time),即系统解开处于死锁状态的多个任务所需花费的时间。死锁解除时间反映了RTOS解决死锁的算法的效率。

6.数据包吞吐率(datagram throuShput time),指一个任务通过调用ERTOS的原语,把数据传送到另一个任务去时,每秒可以传送的字节数。

二、关键的性能指标分析
一个实时操作系统的实时性能的主要评测指标包括上下文切换时间,抢占时间,中断延迟时间,信号量混洗时间。具体含义如下:

1.上下文切换时间
上下文切换时间也称任务切换时间(task switching time),定义为系统在两个独立的、处于就绪态并且具有相同优先级的任务之间切换所需要的时间。它包括三个部分,即保存当前任务上下文的时间、调度程序选中新任务的时间和恢复新任务上下文的时间。切换所需的时间主要取决于保存任务上下文所用的数据结构以及操作系统采用的调度算法的效率。产生任务切换的原因可以是资源可得,信号量的获取等。任务切换是任一多任务系统中基本效率的测量点,它是同步的,非抢占的,实时控制软件实现了一种基于同等优先级任务的时间片轮转算法。影响任务切换的因素有:主机CPU的结构,指令集以及CPU特性。

任务切换过程增加了应用程序的额外负荷。CPU的内部寄存器越多,额外负荷就越重。任务切换所需要的时间取决于CPU有多少寄存器要入栈。实时内核的性能不应该以每秒钟能做多少次任务切换来评价,RTOS中通常是1微秒左右。
这里写图片描述
Figure 2.1 Context Switch Time

T1 = TIME START FOR FUNCTION “OS_TASK_SW()”(任务切换宏)
T2 = TIME END FOR FUNCTION “OS_TASK_SW()”
CST= T2-T1

2.抢占时间(preemption time)
抢占时间即系统将控制权从低优先级的任务转移到高优先级任务所花费的时间。为了对任务进行抢占,系统必须首先识别引起高优先级任务就绪的事件,比较两个任务的优先级,最后进行任务的切换,所以抢占时间中包括了任务切换时间。

它和任务切换有些类似,但是抢占时间通常花费时间更长。这是因为执行中首先要确认唤醒事件,并评估正在运行的任务和请求运行的任务的优先级高低,然后才决定是否切换任务。实质上,所有的多处理任务可以在执行期间动态分配优先级,所以,抢占时间也是衡量实时性能的重要指标。

这里写图片描述
Figure 2.2: Preemption Time

PT = T2 – T0
  • 1

3.中断延迟(Interrupt Latency)
中断延迟时间是指从接收到中断信号到操作系统做出响应,并完成进入中断服务例程所需要的时间。多任务操作系统中,中断处理首先进入一个中断服务的总控程序,然后才进入驱动程序的ISR。

中断延迟时间=最大关中断时间+硬件开始处理中断到开始执行中断服务例程第一条指令之间的时间。

硬件开始处理中断到开始执行中断服务例程的第一条指令之间的时间由硬件决定,所以,中断延迟时间的长短主要取决于最大关中断的时间。硬实时操作系统的关中断时间通常是几微秒,而Linux最坏可达几毫秒。
这里写图片描述
Figure 2.3: Interrupt Latency

IL= Max(Ta,Tb,Tc)
  • 1

4.信号量混洗时间
信号量混洗时间(semaphore shuffling time),是指从一个任务释放信号量到另一个等待该信号量的任务被激活的时间延迟。在RTOS中,通常有许多任务同时竞争某一共享资源,基于信号量的互斥访问保证了任一时刻只有一个任务能够访问公共资源。信号量混洗时间反映了与互斥有关的时间开销,因此也是衡量ERTOS实时性能的一个重要指标。
这里写图片描述
Figure 2.4: Semaphore Shuffling Time

SST = T0-T1
  • 1

三、测试方法
1.任务切换时间测试

测试设计说明:测试项为协同式的任务调度时间,它是指具有相同优先级并且相互独立的两个就绪状态的人物之间相互切换所花费的时间开销。它主要有保存当前任务上下文的时间,调度程序选中新任务的时间和恢复新任务上下文的时间这三部分组成。图3.2给出了两个任务切换过程的示意图
这里写图片描述
图3.1两个任务切换过程的示意图

这里假设测试任务用TASK表示,TASK[i]表示第i个正在运行的任务,测试过程中为了能够尽量减少系统的误差,这里我们采取给系统中设置多个任务,记为任务0到N-1。同时各个任务间的切换是从TASK[0]开始,到TASK[1],这样一直切换下去,最后再从TASK[N-1]切换到最开始的任务TASK[0]。

上述过程重复K次,就可以得到K个任务切换时间。在测试过程中,需要在任务的源代码中插入测试控制代码并记录时间。如下面代码1所示为任务TASK[0]插入测试控制代码后的伪代码执行流程。

2.任务抢占时间测试
测试设计说明:测试项为抢占式的任务调度时间,大小取决于低优先级任务向高优先级任务切换所需要的时间开销。系统在进行任务抢占的时候,先区分出任务优先级的大小,找到优先级高的就绪事件,当发生任务切换时,高优先级的任务先被响应,这里抢占时间就已经把任务切换时间包含在内。

该测试中包含 5 个由高到低不同优先级的任务,各个任务在执行过程中会将自己的计数器加1。在测试开始时,只有优先级最低的任务处于就绪,其它任务都被挂起。优先级最低的任务先唤醒优先级次低的任务被抢占,这样依次抢占下去后,最高优先级的任务获的CPU使用权后又将自己挂起,次高优先级的任务也将自己挂起,到最后优先级最低任务又获得CPU 使用权,一个新的循环又开始。图3.2 是测试3 的运行示意图:
这里写图片描述
图3.2 抢占式的任务调度测试

3.中断管理性能测试
测试设计说明:定义中断处理延迟时间是系统中断发生到中断服务程序中首条指令开始运行之间的间隔所花费的时间。在测试过程中,为了能够测试系统中断延迟时间的最差结果,可以选择一些如系统调用等对中断延迟有比较大影响作用的一系列因素,并使中断服务程序绑定其对应的中断号,最后在程序的适当位置插入测量控制代码。如下面代码2所示为一个用于测量中断延迟的测试负载的伪代码示例。
这里写图片描述
代码说明:代码2中函数call_init是用于生成系统中断,实际过程中通常也采用软中断的方式。这里我们假设Ta是系统中断请求开始的时间,Tb是系统中断服务程序被调用进行的时间,从而Tb-Ta的时间差就是中断延迟。

4.信号混洗时间测试
测试说明:IPC机制性能测试主要测试以下时间:创建一个同步/互斥对象的时间,删除一个同步/互斥对象的时间,获取一个同步/互斥对象的时间,释放一个同步/互斥对象的时间。

获取/释放信号量通常指从释放信号量到等待该信号量被重新激活所需要的时间间隔。测试过程中,设计一个任务TASK1,该任务通过不断获取和释放信号量来模拟信号量的任务同步功能。具体测试流程如下图3.3所示。
这里写图片描述
图3.3 信号量获取与释放流程

流程说明:
获取信号量的时间=SEM_TIME_1-SEM_TIME_0 (1)
释放信号量的时间=SEM_TIME_1-SEM_TIME_0 (2)

阅读更多
文章标签: Linux RTAI realtime
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭