• 沒有找到結果。

5.  結果與討論

5.1.  效能分析結果

就效能分析部份,首先說明的是如何透過 mProfiler 檢視軟體的執行緒層級平行度,

該工具提供之相關資訊如圖 3 所示,圖中的水平軸為由 MPEG-2 decoder 產生出來之所有 執行緒的編號,而垂直軸為時間,圖中藍色長條圖的長度描繪出各執行緒的生命週期長度,

而所有執行緒的起始執行時間,將會從相對於主執行緒 (Task ID = 324) 之起始執行時間的 位置上開始描繪。透過此資訊,多核心嵌入式系統開發者可以了解在任一時間點之軟體執 行緒層級平行度,舉例來說,由圖 3 可以看出,此 MPEG-2 decoder 在 0ms ~ 100 ms 之間 與 260 ms ~ 360 ms 之間,都只透過單一執行緒在處理工作,此程式只有在 100 ms ~ 260 ms 之間 (不到程式生命週期的一半時間) 有維持 4 ~ 5 個執行緒在系統上平行執行,對一 個具有四核心處理器的實驗平台來說,這個實驗結果表示此目標程式的執行緒層級平行度 仍有待改進。

圖 3 執行緒層級平行度之檢視圖

0 50000 100000 150000 200000 250000 300000 350000 400000

324 325 326 327 328 329 330 331 332 333

Time (us)

Task ID

Thread‐Level Parallelism

為輔助多核心嵌入式系統開發者更了解軟體效能瓶頸,因此 mProfiler 提供生命週期 的時間分析,如圖 4 所示,圖中水平軸和垂直軸與圖 3 相同,每個長條圖由執行時間 (run time)、等待時間 (block time) 和其它時間 (other time) 等三種時間堆疊而成,這三種時間 加起來的總長度即為執行緒的生命週期長度。從圖 4 顯示的執行時間長度可以發現,

MPEG-2 decoder 程式中,每個執行緒的工作分配量並不均勻,即編號 324, 327 和 333 這 三個執行緒共被分配到八成以上的工作,而其他七個執行緒則僅被分配到剩下不到兩成的 工作量,如此工作分配不勻的狀況將使得多執行緒程式無法有效利用多核心處理器之硬體 優勢,也會導致程式的效能擴充性 (scalability) 不佳,因此多核心嵌入式系統開發者應盡 可能平均分配工作量,讓各個處理器核心能一起進行與完成工作,以減少較早完成工作之

324 325 326 327 328 329 330 331 332 333 Other time 215841 7511 5511 1817 6403 10499 6260 6129 7798 5108 Run time 126452 4840 6915 56314 4384 4870 6868 4096 4884 32479

Block time 21019 0 0 0 0 0 0 0 0 0

然而,僅參考圖 3 仍無法確定軟體提供的執行緒是在哪顆處理器核心上執行,亦無法 確定執行緒的其他時間究竟是受到哪些執行緒的影響而增長,為此,mProfiler 進一步針對 各個執行緒在各顆處理器核心上的執行時間做分類統計,如圖 5 所示,圖中的水平軸為執

以上便是本計畫提出之 mProfiler 提供的效能分析資訊,藉此讓多核心嵌入式系統開 發者了解軟體的執行緒層級平行度、負載平衡以及軟體的效能瓶頸,之後多核心嵌入式系 統開發者便可針對需求進行軟硬體設計的改良 (如: 平均分配軟體工作量、決定系統上之處 理器核心數量等),以增加系統效能或是減少耗能。

圖 5 負載平衡

324 325 326 327 328 329 330 331 332 333

Core 3 0 0 6915 0 0 0 0 0 0 0

相關文件