1. 程式人生 > >實時系統性能測試指標及方法

實時系統性能測試指標及方法

一、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

3.中斷延遲(Interrupt Latency)
中斷延遲時間是指從接收到中斷訊號到作業系統做出響應,並完成進入中斷服務例程所需要的時間。多工作業系統中,中斷處理首先進入一箇中斷服務的總控程式,然後才進入驅動程式的ISR。

中斷延遲時間=最大關中斷時間+硬體開始處理中斷到開始執行中斷服務例程第一條指令之間的時間。

硬體開始處理中斷到開始執行中斷服務例程的第一條指令之間的時間由硬體決定,所以,中斷延遲時間的長短主要取決於最大關中斷的時間。硬實時作業系統的關中斷時間通常是幾微秒,而Linux最壞可達幾毫秒。
這裡寫圖片描述
Figure 2.3: Interrupt Latency

IL= Max(Ta,Tb,Tc)

4.訊號量混洗時間
訊號量混洗時間(semaphore shuffling time),是指從一個任務釋放訊號量到另一個等待該訊號量的任務被啟用的時間延遲。在RTOS中,通常有許多工同時競爭某一共享資源,基於訊號量的互斥訪問保證了任一時刻只有一個任務能夠訪問公共資源。訊號量混洗時間反映了與互斥有關的時間開銷,因此也是衡量ERTOS實時效能的一個重要指標。
這裡寫圖片描述
Figure 2.4: Semaphore Shuffling Time

SST = T0-T1

三、測試方法
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)