據(jù)(--delay / --duration)實(shí)戰(zhàn)指南)
CANN oam-tools msprof 延遲采集性能數(shù)據(jù)--delay / --duration實(shí)戰(zhàn)指南【免費(fèi)下載鏈接】oam-tools本項(xiàng)目為開(kāi)發(fā)者提供故障定位工具包含故障信息收集軟硬件信息展示AI core error報(bào)錯(cuò)分析等能力提升故障問(wèn)題定位效率文檔可在昇騰社區(qū)搜索“故障處理簡(jiǎn)介”選擇社區(qū)版。項(xiàng)目地址: https://gitcode.com/cann/oam-tools導(dǎo)讀本文圍繞 CANN oam-tools 中 msprof 工具的延遲采集性能數(shù)據(jù)能力展開(kāi)講解如何通過(guò)--delay與--duration兩個(gè)參數(shù)按計(jì)劃延遲啟動(dòng)性能數(shù)據(jù)采集、并限定采集持續(xù)時(shí)間從而精準(zhǔn)覆蓋 AI 任務(wù)運(yùn)行的關(guān)鍵階段。讀完本文你將掌握延遲采集的命令格式、參數(shù)取值范圍與默認(rèn)值、與動(dòng)態(tài)采集--dynamic的互斥約束以及底層參數(shù)解析與采集調(diào)度機(jī)制的源碼級(jí)原理可直接復(fù)現(xiàn)于實(shí)際故障定位與性能分析場(chǎng)景。功能說(shuō)明為什么需要延遲采集在 AI 訓(xùn)練/推理任務(wù)的性能分析中任務(wù)往往存在明顯的啟動(dòng)預(yù)熱階段與穩(wěn)定運(yùn)行階段。若從任務(wù)啟動(dòng)那一刻就開(kāi)始全量采集性能數(shù)據(jù)會(huì)產(chǎn)生大量與問(wèn)題定位無(wú)關(guān)的早期數(shù)據(jù)既浪費(fèi)存儲(chǔ)與磁盤(pán) IO也增加后續(xù)解析開(kāi)銷。msprof 的延遲采集能力正是為解決這一問(wèn)題而設(shè)計(jì)用戶可以通過(guò)設(shè)置--delay和--duration兩個(gè)參數(shù)配置數(shù)據(jù)采集的延遲啟動(dòng)時(shí)間與采集持續(xù)時(shí)間讓 Profiling 在任務(wù)運(yùn)行到目標(biāo)階段時(shí)才開(kāi)始并在設(shè)定時(shí)長(zhǎng)后自動(dòng)停止。從 oam-tools 源碼看該能力與動(dòng)態(tài)采集共用同一套參數(shù)通道且兩者互斥。延遲采集場(chǎng)景下不支持動(dòng)態(tài)采集性能數(shù)據(jù)即不能同時(shí)配置--dynamic參數(shù)詳見(jiàn)下文與動(dòng)態(tài)采集的互斥關(guān)系。命令格式與適用前提以運(yùn)行用戶登錄工具所在環(huán)境執(zhí)行以下命令采集性能數(shù)據(jù)msprof [options] app延遲采集有兩條硬性前提缺一不可僅當(dāng)采集 AI 任務(wù)運(yùn)行性能數(shù)據(jù)時(shí)支持啟用延遲采集能力即使用場(chǎng)景限定為對(duì)用戶程序app進(jìn)行 Profiling 采集必須傳入用戶程序路徑。必須傳入用戶程序且--delay/--duration與--dynamic參數(shù)不能同時(shí)配置。app 參數(shù)說(shuō)明請(qǐng)參見(jiàn) app 參數(shù)說(shuō)明options 參數(shù)說(shuō)明請(qǐng)參見(jiàn)下表同時(shí)可疊加 采集 AI 任務(wù)運(yùn)行性能數(shù)據(jù) 中的參數(shù)如--runtime-apion、--task-timeon等組成完整的采集方案。參數(shù)說(shuō)明表1options 參數(shù)說(shuō)明參數(shù)可選/必選描述--delay可選按設(shè)定時(shí)間延遲采集性能數(shù)據(jù)范圍 [1, 4294967295]單位 s默認(rèn)值 0。若配置的時(shí)間超過(guò)了 AI 任務(wù)的執(zhí)行時(shí)間在 AI 任務(wù)執(zhí)行期間不會(huì)啟動(dòng)采集。--duration可選性能數(shù)據(jù)采集的持續(xù)時(shí)間范圍 [1, 4294967295]單位 s默認(rèn)未配置即隨采集開(kāi)始持續(xù)到任務(wù)結(jié)束自動(dòng)停止采集。若配置了--delay參數(shù)則 duration 從 delay 結(jié)束的時(shí)刻開(kāi)始計(jì)時(shí)。兩個(gè)參數(shù)的關(guān)鍵語(yǔ)義要點(diǎn)--delay決定何時(shí)開(kāi)始從采集進(jìn)程啟動(dòng)即 msprof 拉起 AI 任務(wù)開(kāi)始計(jì)時(shí)達(dá)到設(shè)定的秒數(shù)后才真正啟動(dòng)數(shù)據(jù)采集。若 delay 值大于 AI 任務(wù)總執(zhí)行時(shí)間則整個(gè)任務(wù)執(zhí)行期間都不會(huì)啟動(dòng)采集任務(wù)結(jié)束后采集自然終止不會(huì)產(chǎn)生數(shù)據(jù)。--duration決定持續(xù)多久從采集啟動(dòng)時(shí)刻即 delay 結(jié)束的時(shí)刻開(kāi)始計(jì)時(shí)達(dá)到設(shè)定秒數(shù)后自動(dòng)停止采集。默認(rèn)未配置時(shí)采集將一直持續(xù)到 AI 任務(wù)結(jié)束。兩者的時(shí)間基準(zhǔn)不同delay 以msprof 啟動(dòng)時(shí)刻為基準(zhǔn)duration 以采集實(shí)際啟動(dòng)時(shí)刻delay 結(jié)束時(shí)刻為基準(zhǔn)兩者共同構(gòu)成[delay, delayduration]的完整采集窗口。參數(shù)范圍的源碼依據(jù)從 oam-tools 源碼可以印證上述取值范圍與默認(rèn)行為參數(shù)注冊(cè)于參數(shù)解析器 input_parser.cpp其幫助信息明確為Collect start delay time in seconds, range 1 ~ 4294967295s.與Collection duration in seconds, range 1 ~ 4294967295s.取值范圍校驗(yàn)通過(guò)CheckArgRange(cmdInfo, opt, 1, PROF_MAX_DYNAMIC_TIME)完成input_parser.cpp最小值 1、最大值與動(dòng)態(tài)采集共用的上限PROF_MAX_DYNAMIC_TIME4294967295保持一致解析后的值分別寫(xiě)入?yún)?shù)結(jié)構(gòu)體的delayTime與durationTime字段input_parser.cpp該字段定義于 prof_params.h并支持序列化/反序列化SET_VALUE/FROM_STRING_VALUE見(jiàn) prof_params.h 與 prof_params.h。使用示例以下命令演示一個(gè)最典型的延遲采集場(chǎng)景AI 任務(wù)啟動(dòng) 3 秒后開(kāi)始采集持續(xù)采集 3 秒后自動(dòng)停止msprof --delay3 --duration3 /home/projects/MyApp/out/main執(zhí)行時(shí)序可拆解為t0smsprof 啟動(dòng)拉起用戶程序/home/projects/MyApp/out/maint0~3s處于延遲等待階段不采集任何性能數(shù)據(jù)t3s--delay計(jì)時(shí)結(jié)束采集啟動(dòng)--duration開(kāi)始計(jì)時(shí)t3~6s持續(xù)采集性能數(shù)據(jù)t6s--duration計(jì)時(shí)結(jié)束采集自動(dòng)停止。若 AI 任務(wù)在 3 秒內(nèi)就結(jié)束了執(zhí)行時(shí)間 ≤ delay則整個(gè)任務(wù)執(zhí)行期間不會(huì)啟動(dòng)采集——這一行為在源碼中有對(duì)應(yīng)處理應(yīng)用模式下若任務(wù)在 delay 時(shí)間內(nèi)提前退出會(huì)記錄日志[App Mode] Before delay time, the app process has exited.并直接結(jié)束running_mode.cpp。底層原理采集模式的環(huán)境變量注入延遲采集在源碼層面的實(shí)現(xiàn)并非新增一套獨(dú)立采集鏈路而是通過(guò)環(huán)境變量標(biāo)記采集模式的方式將--delay/--duration的存在信息傳遞給運(yùn)行時(shí) Profiling 組件由底層按延遲窗口控制采集啟停。關(guān)鍵證據(jù)位于 application.cppif (DynProfCliMgr::instance()-IsAppMode()) { envsV.push_back(DynProfCliMgr::instance()-GetKeyPidEnv()); } if (!params-delayTime.empty() || !params-durationTime.empty()) { envsV.push_back(PROFILING_MODE_ENV DELAY_DURARION_PROFILING_VALUE); }即當(dāng)且僅當(dāng)delayTime或durationTime任一非空時(shí)msprof 會(huì)向用戶程序注入環(huán)境變量PROFILING_MODEdelay_or_duration常量定義見(jiàn) config.h。這與動(dòng)態(tài)采集共用PROFILING_MODE環(huán)境變量通道動(dòng)態(tài)采集attach 方式要求用戶預(yù)先設(shè)置export PROFILING_MODEdynamic見(jiàn) PROFILING_MODE 環(huán)境變量說(shuō)明延遲采集則由 msprof 進(jìn)程側(cè)自動(dòng)注入delay_or_duration標(biāo)記無(wú)需用戶手工配置。因此--delay/--duration與--dynamic在語(yǔ)義上都屬于對(duì)采集時(shí)機(jī)的控制通過(guò)同一PROFILING_MODE通道生效二者天然互斥——這正是文檔中延遲采集場(chǎng)景下不支持動(dòng)態(tài)采集性能數(shù)據(jù)約束的底層原因。與動(dòng)態(tài)采集的互斥關(guān)系延遲采集與 動(dòng)態(tài)采集性能數(shù)據(jù)--dynamicon屬于兩種并列的采集時(shí)機(jī)控制方式具有以下差異與約束對(duì)比維度延遲采集--delay / --duration動(dòng)態(tài)采集--dynamic啟動(dòng)時(shí)機(jī)控制按預(yù)設(shè)秒數(shù)自動(dòng)延遲啟動(dòng)、自動(dòng)停止通過(guò)交互命令 start / stop 手動(dòng)控制是否需要交互否全自動(dòng)是進(jìn)入(msprof)交互模式參數(shù)--delay、--duration可選--dynamicon必選、--pidattach 方式必選啟動(dòng)方式必須傳入用戶程序app 模式launch 或 attach 兩種方式與對(duì)方的關(guān)系不支持與動(dòng)態(tài)采集同時(shí)配置文檔明確不支持與延遲采集--delay 和 --duration 參數(shù)同時(shí)配置兩條硬性約束請(qǐng)務(wù)必遵守--delay/--duration與--dynamic不能同時(shí)配置否則屬于非法參數(shù)組合動(dòng)態(tài)采集場(chǎng)景下用戶程序中不能設(shè)置環(huán)境變量PROFILING_MODE和PROFILING_OPTIONS詳見(jiàn) 動(dòng)態(tài)采集文檔 的注意事項(xiàng)而延遲采集的環(huán)境變量由 msprof 自動(dòng)注入用戶無(wú)需也無(wú)法手工干預(yù)。常見(jiàn)問(wèn)題與注意事項(xiàng)采集窗口內(nèi)無(wú)數(shù)據(jù)若--delay配置的時(shí)間超過(guò)了 AI 任務(wù)的執(zhí)行時(shí)間AI 任務(wù)執(zhí)行期間不會(huì)啟動(dòng)采集也就不會(huì)產(chǎn)生性能數(shù)據(jù)。可通過(guò)查看 msprof 日志中的[App Mode] Before delay time, the app process has exited.告警running_mode.cpp快速確認(rèn)是否屬于任務(wù)提前退出場(chǎng)景。duration 未配置時(shí)的行為默認(rèn)情況下采集隨啟動(dòng)持續(xù)到 AI 任務(wù)結(jié)束自動(dòng)停止適合不關(guān)心采集開(kāi)銷、需要完整覆蓋任務(wù)全程的場(chǎng)景。參數(shù)疊加延遲采集參數(shù)可與 采集 AI 任務(wù)運(yùn)行性能數(shù)據(jù) 中的其他采集項(xiàng)參數(shù)自由疊加例如同時(shí)開(kāi)啟 runtime API、任務(wù)耗時(shí)等采集維度建議將--delay精確對(duì)齊到任務(wù)的熱點(diǎn)階段以最小化數(shù)據(jù)冗余。數(shù)據(jù)產(chǎn)出與解析采集結(jié)束后在輸出路徑下生成 PROF_XXX 目錄性能數(shù)據(jù)的解析與導(dǎo)出方法可參見(jiàn) msprof 命令總覽 及 AI 任務(wù)運(yùn)行性能數(shù)據(jù)采集 中的輸出說(shuō)明。小結(jié)延遲采集是 msprof 在何時(shí)采集維度上的關(guān)鍵能力通過(guò)--delay指定延遲啟動(dòng)秒數(shù)、--duration指定采集持續(xù)秒數(shù)即可在 AI 任務(wù)運(yùn)行的關(guān)鍵階段精準(zhǔn)采樣顯著降低無(wú)關(guān)數(shù)據(jù)量。其參數(shù)解析、范圍校驗(yàn)input_parser.cpp、環(huán)境變量注入application.cpp與任務(wù)提前退出判定running_mode.cpp在 oam-tools 源碼中均有清晰實(shí)現(xiàn)讀者可結(jié)合上述文件路徑進(jìn)一步深入閱讀。使用時(shí)要牢記僅支持 AI 任務(wù)運(yùn)行性能數(shù)據(jù)采集場(chǎng)景、必須傳入用戶程序、且不可與--dynamic同時(shí)配置?!久赓M(fèi)下載鏈接】oam-tools本項(xiàng)目為開(kāi)發(fā)者提供故障定位工具包含故障信息收集軟硬件信息展示AI core error報(bào)錯(cuò)分析等能力提升故障問(wèn)題定位效率文檔可在昇騰社區(qū)搜索“故障處理簡(jiǎn)介”選擇社區(qū)版。項(xiàng)目地址: https://gitcode.com/cann/oam-tools創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考