實時系統(tǒng)必須對外部和內(nèi)部需求做出快速反應(yīng)。當(dāng)系統(tǒng)使用多核架構(gòu)時,交互的速度和數(shù)量會急劇上升。雖然這提高了系統(tǒng)性能,但它使應(yīng)用程序事件的實時排序變得復(fù)雜,因為多核系統(tǒng)事件可以在多個獨立處理器上同時發(fā)生,而不是在單個處理器上順序發(fā)生。
對于多核開發(fā)人員而言,管理事件數(shù)量及其同時性質(zhì)的復(fù)雜性增加代表了設(shè)計更具挑戰(zhàn)性的系統(tǒng)。與單處理器系統(tǒng)相比,多核系統(tǒng)診斷系統(tǒng)故障或效率低下的原因要困難得多。由于可用的多核工具很少,開發(fā)人員只能使用原始的打印語句技術(shù),這些技術(shù)會在整個系統(tǒng)操作過程中留下面包屑,指示有關(guān)已發(fā)生的各種事件的數(shù)據(jù)。開發(fā)人員必須收集并理解碎屑并推斷系統(tǒng)的狀態(tài),這一過程通常需要隨后重新測量以獲得更精細的粒度和重復(fù)該過程。
為了有效地解開多核系統(tǒng)上復(fù)雜的操作序列,開發(fā)人員需要即時回放,使他們能夠檢查緊接感興趣區(qū)域之前的系統(tǒng)操作。如圖 1 所示,一種新型調(diào)試工具準(zhǔn)確顯示了多核系統(tǒng)在特定時間段內(nèi)發(fā)生的情況。所有系統(tǒng)事件的圖形分析顯示在由應(yīng)用程序線程組織并按處理器內(nèi)核分組的單個時間尺度上。
圖 1: TraceX 提供多核系統(tǒng)中實時事件的圖形視圖。在此示例中,可以看到 Core-0 和 Core-1 同時執(zhí)行不同的線程。
系統(tǒng)事件分析的傳統(tǒng)方法
實時程序員早就了解系統(tǒng)行為對其應(yīng)用程序功能和性能的重要性。傳統(tǒng)方法通過切換 I/O 引腳、使用 printf、設(shè)置變量或?qū)⒅祵懭胛募碓诖a到達某個階段時生成有關(guān)系統(tǒng)行為的數(shù)據(jù)來解決這些問題。
插入這樣的響應(yīng)需要大量時間,尤其是考慮到檢測代碼在第一次時通常不能完全按預(yù)期工作,并且必須進行調(diào)試。一旦驗證了應(yīng)用程序的該部分,就需要刪除檢測代碼,并且需要對其刪除進行調(diào)試。大多數(shù)檢測過程是手動的,因此很耗時并且容易出現(xiàn)額外的錯誤。
除了檢測代碼之外,開發(fā)人員還需要找到一種方法來解釋生成的數(shù)據(jù)。檢測代碼生成的大量信息使確定哪些系統(tǒng)事件以何種順序發(fā)生的任務(wù)變得復(fù)雜。
新方法提供優(yōu)勢
與傳統(tǒng)方法相比,TraceX 自動分析并以圖形方式描繪運行期間在目標(biāo)系統(tǒng)上捕獲的系統(tǒng)和應(yīng)用程序事件。線程上下文切換、搶占、暫停、終止和系統(tǒng)中斷等事件都會留下調(diào)試工具識別和顯示的面包屑。這些面包屑描述了剛剛發(fā)生的事件、涉及哪個線程、該線程在哪個內(nèi)核上運行、何時發(fā)生以及其他相關(guān)信息。
使用此工具,用戶可以使用應(yīng)用程序編程接口 (API) 記錄任何所需的應(yīng)用程序事件。事件信息存儲(記錄)在目標(biāo)系統(tǒng)上的循環(huán)緩沖區(qū)中,緩沖區(qū)大小由應(yīng)用程序確定。循環(huán)緩沖區(qū)可以隨時存儲最近的“n”個事件,并可在系統(tǒng)故障或其他重大事件的情況下進行檢查。
良好的多核調(diào)試工具允許應(yīng)用程序在特定時間(例如遇到感興趣的區(qū)域時)動態(tài)停止和啟動事件記錄。這樣可以避免在系統(tǒng)正常運行時使數(shù)據(jù)庫混亂并消耗目標(biāo)內(nèi)存。當(dāng)遇到斷點或系統(tǒng)崩潰或應(yīng)用程序運行完成后,可以將事件日志上傳到主機進行分析。
一旦事件日志從目標(biāo)內(nèi)存上傳到主機,該工具就會在代表時間的水平軸上以圖形方式顯示事件(參見圖 1)。與事件相關(guān)的各種應(yīng)用程序線程和系統(tǒng)例程沿縱軸列出,事件本身出現(xiàn)在相應(yīng)的行中。對于多核系統(tǒng),事件鏈接到它們各自的處理器內(nèi)核并分組在一起,以便開發(fā)人員可以輕松查看內(nèi)核的所有事件。
所有事件也顯示在頂部摘要行中,無論內(nèi)核或線程如何,為開發(fā)人員提供了一種方便的方式來獲取系統(tǒng)事件的完整畫面,而無需向下滾動查看所有線程和內(nèi)核。事件由位于沿水平時間線的發(fā)生點以及相關(guān)線程或系統(tǒng)例程的右側(cè)的顏色編碼圖標(biāo)表示。軸可以展開以顯示更多事件詳細信息,也可以折疊以顯示更多事件。時間刻度可以向左(向后)或向右(向前)平移以顯示跟蹤緩沖區(qū)中的任何點。如圖2所示,選擇單個事件時,將為該事件提供詳細信息,包括核心,上下文,事件,線程指針,新狀態(tài),堆棧指針和下一個線程點。
圖 2:單擊事件圖標(biāo)可以顯示單個事件的詳細信息。
解決優(yōu)先級反轉(zhuǎn)問題
最具挑戰(zhàn)性的實時問題之一是優(yōu)先級反轉(zhuǎn)。優(yōu)先級反轉(zhuǎn)的出現(xiàn)是因為實時操作系統(tǒng) (RTOS) 采用基于優(yōu)先級的搶占式調(diào)度程序來確保準(zhǔn)備好運行的最高優(yōu)先級線程實際運行。調(diào)度程序可以在執(zhí)行過程中搶占一個較低優(yōu)先級的線程來滿足這個目標(biāo)。
當(dāng)高優(yōu)先級和低優(yōu)先級線程共享資源(例如內(nèi)存緩沖區(qū))時,可能會出現(xiàn)問題。如果在高優(yōu)先級線程準(zhǔn)備運行時低優(yōu)先級線程正在使用共享資源,則高優(yōu)先級線程必須等待低優(yōu)先級線程完成。如果較高優(yōu)先級的線程必須滿足關(guān)鍵期限,則必須計算它可能必須等待其所有共享資源的最長時間,以確定其最壞情況下的性能。當(dāng) CPU 為低優(yōu)先級線程提供服務(wù)時,高優(yōu)先級線程被迫等待,就會發(fā)生優(yōu)先級反轉(zhuǎn)。
優(yōu)先級倒置很難識別和糾正。他們的癥狀通常是表現(xiàn)不佳,但表現(xiàn)不佳源于許多潛在原因。使確定原因的挑戰(zhàn)更加復(fù)雜的是,優(yōu)先級倒置可以逃避測試,這可能意味著倒置是不確定的。
像 TraceX 這樣的系統(tǒng)事件工具可以輕松自動地識別優(yōu)先級反轉(zhuǎn)。跟蹤緩沖區(qū)清楚地識別在任何時間點正在運行的線程并記錄線程就緒狀態(tài)的任何變化。因此,很容易及時返回以確定較高優(yōu)先級線程是否已準(zhǔn)備好運行但被持有較高優(yōu)先級線程所需資源的較低優(yōu)先級線程阻塞。圖 3 顯示了非確定性優(yōu)先級反轉(zhuǎn)。
圖 3:高優(yōu)先級線程必須等待低優(yōu)先級線程在非確定性優(yōu)先級反轉(zhuǎn)中釋放互斥鎖。
如此圖所示,當(dāng) Low_thread 被 High_thread 搶占時,它持有一個互斥鎖。High_thread 然后尋找相同的互斥體,但必須等待 Low_thread 釋放它。但是,Medium_thread 進行了干預(yù),可以運行不確定的時間長度,不僅延遲了 Low_thread,還延遲了 High_thread。只有當(dāng) Medium_thread 為 Low_thread 提供足夠的時間以完成其處理并釋放互斥鎖時,High_thread 才能恢復(fù)。
提高應(yīng)用程序性能
雖然大多數(shù)開發(fā)人員使用支持多核的工具來理解和糾正問題,但好處并不止于此。這些工具提供了用于分析和改進系統(tǒng)級應(yīng)用程序性能的執(zhí)行配置文件。使用執(zhí)行配置文件,開發(fā)人員可以看到每個線程和系統(tǒng)服務(wù)使用的 CPU 時間量(參見圖 4)。開發(fā)人員可以輕松地深入了解特定事件以進行診斷。
圖 4:執(zhí)行配置文件顯示每個線程使用的 CPU 時間。
與多核系統(tǒng)操作更相關(guān)的是,平衡所有可用內(nèi)核的處理負載可以實現(xiàn)更大的系統(tǒng)吞吐量。如果系統(tǒng)配置文件提供了有關(guān)哪些內(nèi)核具有較長空閑時間的信息,如圖 4 所示,開發(fā)人員將獲得有關(guān)如何將處理轉(zhuǎn)移到其他空閑內(nèi)核的有力線索。
支持多核的調(diào)試工具以標(biāo)準(zhǔn)調(diào)試器無法提供的方式繪制系統(tǒng)的圖形圖像。它為開發(fā)人員提供了對中斷、上下文切換和其他系統(tǒng)事件的清晰視圖,這些事件通常通過耗時的代碼檢測和對結(jié)果數(shù)據(jù)的繁瑣檢查來檢測。因此,與單獨使用標(biāo)準(zhǔn)調(diào)試工具相比,開發(fā)人員可以在更短的時間內(nèi)找到并修復(fù)錯誤并優(yōu)化應(yīng)用程序性能。由于調(diào)試占應(yīng)用程序開發(fā)的 70%,這些工具顯著改進了產(chǎn)品,同時減少了開發(fā)時間。
審核編輯:郭婷
-
cpu
+關(guān)注
關(guān)注
68文章
11080瀏覽量
217097 -
API
+關(guān)注
關(guān)注
2文章
1620瀏覽量
64048 -
RTOS
+關(guān)注
關(guān)注
24文章
851瀏覽量
121175
發(fā)布評論請先 登錄
隧道人員定位管理系統(tǒng)簡要描述

米爾瑞芯微多核異構(gòu)低功耗RK3506核心板重磅發(fā)布
PanDao:制造成本影響分析軟件工具
SEGGER SystemView支持多核行為的觀察和驗證

智能化雨水情自動測報系統(tǒng):實時發(fā)布降水預(yù)警信息

評論