必威电竞|足球世界杯竞猜平台

oProfile
來源:互聯網

OProfile是一種Linux內核支持的性能分析機制,它在時鐘中斷處理入口處建立監測點,記錄被中斷的上下文現場。用戶態的工具oprof_start負責在用戶態收集數據,opreport則分析數據并給出分析報告。

OProfile可以幫助開發人員找到程序的瓶頸,指導代碼優化。該工具由John Levon在2001年為Linux內核版本2.4編寫,包括一個內核模塊、一個用戶態守護進程和幾個用戶態工具。

在Linux 2.2/2.4中,僅支持32位x86和IA64;在Linux 2.6中,支持范圍更廣:x86(32位和64位)、DEC Alpha、MIPS、ARM、sparc64、ppc64、AVR32。調用圖僅在x86和ARM上受支持。

2012年,兩位IBM工程師將OProfile評選為Linux上使用最廣泛的兩種性能計數器監控分析工具之一,與perf工具齊名。2021年,OProfile將從Linux kernel 5.12中移除,而用戶空間工具將繼續通過使用kernel的perf系統來工作。

功能和服務

oprofile 是 Linux 平臺上的一個功能強大的性能分析工具, 支持兩種采樣(sampling)方式:基于事件的采樣(event based)和基于時間的采樣(時間 based)。

基于事件的采樣是oprofile只記錄特定事件(比如L2 cache miss)的發生次數,當達到用戶設定的 定值時oprofile 就記錄一下(采一個樣)。這種方式需要CPU 內部有性能計數器(performace counter)。

基于時間的采樣是oprofile 借助OS 時鐘中斷的機制,每個時鐘中斷 oprofile 都會記錄一次(采一次樣)。引入的目的在于,提供對沒有性能計數器 CPU 的支持。其精度相對于基于事件的采樣要低。因為要借助 OS 時鐘中斷的支持,對禁用中斷的代碼oprofile不能對其進行分析。

oprofile 在Linux 上分兩部分,一個是內核模塊(oprofile.ko),一個為用戶空間的守護進程(oprofiled)。前者負責訪問性能計數器或者注冊基于時間采樣的函數(使用register_timer_hook注冊之,使時鐘中斷處理程序最后執行profile_tick 時可以訪問之),并采樣置于內核的緩沖區內。后者在后臺運行,負責從內核空間收集數據,寫入文件。

Oprofile 工具概述:

op_help: 列出可用的事件,并帶有簡短的描述

opcontrol: 控制 Oprofile 的數據收集

oprofpp: 檢索有用的評測數據

op_時間: 為系統上的所有映像列出相關的評測值

op_to_source: 產生帶注解的源文件、匯編文件或源文件和匯編文件的混合

op_merge: 合并屬于同一個應用程序的采樣文件

op_import: 將采樣數據庫文件從外部格式(abi)轉換為本地格式

參考資料 >

生活家百科家居網