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