Tracealyzer是Percepio 公司開發的一款可視化跟蹤工具, 目前它提供了30多種相互關聯的運行時行為視圖,支持裸機、FreeRTOS、μC/OS-III、Zephyr、ThreadX、VxWorks、Linux系統的跟蹤。能夠幫助開發人員加快固件的開發,減少對系統驗證和性能優化所需要的時間。
本文將介紹如何通過Tracealyzer實現Linux系統的跟蹤。
1)在Linux主機上安裝Tracealyzer
Tracealyzer應用可以運行在Windows系統和Linux系統上,如果在在Linux系統上安裝應用,需Mono框架支持。
可以參考Tracealyzer應用程序目錄中的RunningOnLinux.txt。其中包含針對某些Linux發行版的附加說明。
2)在目標系統設置LTTng
在運行Linux系統的目標設備上安裝LTTng(Linux Trace Toolkit next generation),具體步驟與使用的目標系統相關。為了熟悉LLTng,可以先在主機上安裝。在Ubuntu系統上,只需要幾個apt-get命令。
確保運行跟蹤的用戶位于tracing group組,或者使用root用戶進行跟蹤。
在某些情況下,你需要在記錄跟蹤之前以root用戶身份啟動lttng -sessiond。
安裝LLTng并確保用戶位于tracing group后,可以創建一個簡單的跟蹤,例如:
lttng create
lttng enable-event -k sched_*
lttng add-context -k -t pid
lttng add-context -k -t ppid
lttng start
# Run some test command to get more activity in the trace echo “Hello world” | wc
lttng stop
lttng destroy
如果設置正確,將在~/ ltng -traces中記錄跟蹤信息。在Tracealyzer中選擇File ->Open→Open Folder加載trace文件。
3)在Tracealyzer中查看LTTng跟蹤記錄
在Linux系統中,使用Tracealyzer應用目錄中的launch-tz.sh腳本啟動Tracealyzer。
$ cd Tracealyzer--linux64
$ ./launch-tz.sh
如果不熟悉Tracealyzer,可以參考https://percepio.com/tag/tzlinux/下的Linux跟蹤系列文章。
接下來,閱讀Tracealyzer用戶手冊。用戶手冊可以在Help菜單中找到。建議閱讀Views、Tools、Event Mapping、User Events和Intervals and State Machines章節。TraceRecorder的部分僅適用于RTOS跟蹤。
確保在設置中啟用了“Raw Events”,參見File ->Settings->Project Settings->Performance Settings,確?!癐nclude Raw Events”項選中。
下一步是從目標系統獲取LTTng跟蹤記錄。首先,使用File ->Open->Open Folder并選擇root下跟蹤文件夾,可以打開上一步中記錄的跟蹤信息。
更簡便的方法是使用Trace菜單中的Tracealyzer Library Tool,用戶可以使用SSH連接直接從Tracealyzer應用中控制和下載跟蹤。
Target Library工具
使用Target Library,你可以設置目標配置文件,以便于訪問。使用New按鈕創建一個新的配置文件,設置目標地址,用戶名和密碼或私鑰文件。配置文件創建完成后,通過Connect按鈕連接到目標。
連接后,Target Library界面將打開一個新標簽,其中包含三個主要部分,跟蹤會話控制面板、命令日志和命令詳細信息框。單擊Start New Session按鈕啟動新會話。默認情況下,已經定義了一個TzTrace會話,它被預先配置為包括scheduling調度、syscalls系統調用、signals信號和UST事件。用戶可以使用Sessions和Channels Editor創建自己的設置。
Quick Connect選項
Target Library工具還提供了一個“Quick Connect”選項,位于左下角,允許用戶在一個字符串中指定所有參數,例如:
host=raspberrypi;user=pi;pass=raspberry;
Quick Connect選項的完整列表如下:
host -目標的主機名或地址
port - SSH端口(默認為22)
myhost -目標端看到的主機地址,可以不指定,但如果目標無法查找主機的主機名,則需顯式指定。
user—要連接的用戶
pass -用戶的密碼
keyFile -用于公鑰身份驗證的密鑰文件,注意F大寫。
cmdname - lttng命令的名稱。默認為lttng,但在使用前綴或類似的情況下可以重寫。
輸入連接字符串后,即可以使用 “Connect”按鈕進行連接。這需要主機已安裝lttng -relayd工具,通常使用發行版的lytng -tools包安裝。如果在Windows主機上運行Tracealyzer,則需要使用Windows Services For Linux,并確保在該環境中安裝并可訪問lttng -relayd。
為了獲得最佳體驗,我們建議在包含調度事件的內核通道上啟用pid和ppid上下文字段。在跟蹤用戶空間事件(UST)時,建議啟用vtid上下文。這將有助于Tracealyzer在某些特殊情況下正確呈現事件,特別是涉及多核系統中的遷移。
用于Linux跟蹤的Tracealyzer特性
當查看LTTng跟蹤信息時,Tracealyzer提供了專為Linux系統設計的分析功能:
Signals And Syscalls資源管理器工具,可以幫助分析進程如何通過系統調用與內核交互。例如,它可以讓你跟蹤正在訪問的文件。它將嘗試幫助你跟蹤文件描述符(有一些限制),并幫助識別失敗的調用。它可以顯示每個線程、進程或進程樹的系統調用列表。此外,它還可以展示信號是如何產生和傳遞的。
syscalls plot繪制系統調用的持續時間。它支持兩種模式:執行時間和響應時間。前者將只考慮線程處于活動狀態時的時間,而后者將包括線程切換出(即阻塞)的時間。
Communication flow view視圖具有特定于linux的模式,可以通過view菜單訪問。它支持進程樹模式、信號模式和文件描述符模式。后者可以幫助您跟蹤進程如何通過管道等進行通信。
如果在主跟蹤視圖或事件日志中選擇raw event并右鍵單擊它,則可以向快速繪圖中添加數字字段。這可以用于任何事件類型,包括自己的用戶空間跟蹤事件。
Linux事件
Tracealyzer內置了對以下類型的Linux內核事件的感知:
調度事件(內核域中的sched_*)
信號事件(內核域中的signal_*)
IRQ和SoftIRQ事件(內核域的irq_*)
系統調用(在內核域中--sycall -a)
其他事件將以“Raw Events”的形式呈現。默認情況下,Tracealyzer不會解釋這些事件,只會在跟蹤視圖中顯示為事件標簽(即那些具有青色背景色的事件標簽),并且也會在事件日志中列出。
注意,Raw Events可以通過“Event Interpretation”來配置,以創建“User Events”。這些可以在用戶事件信號圖中繪制,并轉換為狀態機或自定義間隔。請參閱Tracealyzer用戶手冊中的“Event Mapping”、“User Events”和“Intervals and State Machines”章節。
Tracealyzer目標庫使用LTTng接口,通過SSH連接到目標系統上的LTTng。LTTng接口對快照的支持有限。用戶也可以通過終端手動控制LTTng。然后將跟蹤目錄傳輸到主機,使用File ->Open Folder打開。
緩沖區覆蓋不均勻的跟蹤可能會有問題,多核Linux系統上的快照跟蹤有時就是這種情況。不均勻緩沖區覆蓋,指的是不同的LTTng通道或事件流覆蓋不同時間段的場景。如果為一個核調度數據的時間為30秒,而為另一個核調度數據的時間只有5秒,那么這些時間不一定在跟蹤的開始或結束時對齊。這使得Tracealyzer很難同步調度跟蹤。這個問題可以通過確保捕獲整個跟蹤來避免,例如通過將跟蹤流傳輸到目標文件系統(存儲在目標上)。
審核編輯:劉清
-
Linux系統
+關注
關注
4文章
591瀏覽量
27354 -
RTOS
+關注
關注
21文章
809瀏覽量
119433 -
FreeRTOS
+關注
關注
12文章
483瀏覽量
62007 -
SSH
+關注
關注
0文章
185瀏覽量
16302
原文標題:如何使用Tracealyzer跟蹤Linux?
文章出處:【微信號:麥克泰技術,微信公眾號:麥克泰技術】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論