ppc linux 性能,用profile和oprofile监视视linux性能!
profile使用:
profile功能是架構無關的,可以用來監視linux內核的4項功能,即:
11 #define CPU_PROFILING?? 1
12 #define SCHED_PROFILING 2
13 #define SLEEP_PROFILING 3
14 #define KVM_PROFILING?? 4
要想找開profile功能,除了要在menuconfig中打開支持選項外,還要在命令行加上profile=**,##.
**表示上述4種功能之一,##表示一個數字,用來表示監視的顆粒度,越小越細。
當做了這些工作之后還需要用到util linux工具中的readprofile來讀取結果,結果是從/proc/profile文件中讀取的,此工具做了格式化處理。以下為轉載:
1. 如何使用profile:
首先確認內核支持profile,然后在內核啟動時加入以下參數:profile=1或者其它參數, 新的內核支持profile=schedule,1
2. 內核啟動后會創建/proc/profile文件,這個文件可以通過readprofile讀取,
如readprofile -m /proc/kallsyms | sort -nr > ~/cur_profile.log,
或者readprofile -r -m /proc/kallsyms |sort -nr,
或者readprofile -r && sleep 1 && readprofile -m /proc/kallsyms |sort -nr >~/cur_profile.log
3. 讀取/proc/profile可獲得哪些內容?
根據啟動配置profile=?的不同,獲取的內容不同:
如果設置成profile=schedule可以獲得每個函數調用schedule的次數,用來調試schedule很有用
profile的實現:
在內核中創建一個/proc/profile接口,在系統啟動時用profile_init()分配好存放profile信息的內存,每條指令都有一個計數器。
如果設置的是profile=2 統計每條指令執行的次數。在時鐘中斷中調用? ?? ???profile_tick(CPU_PROFILING,
regs),將當前指令regs->eip的計數值+1。這個統計有點不準,因為一個jiffies之間,可能執行很多函數,而統計的只是恰好發生
時鐘中斷時的那個函數。但取樣點多了,這些信息還是能說明問題。
如果設置的是profile=schedule 統計每個指令調用schedule()的次數,在schedule()中調用profile_hit(SCHED_PROFILING, __builtin_return_address(0));
其實真正調用schedule的指令只有有限的幾個,但這些信息可以獲得調度點的精確信息。
profile_hit()的作用是將當前指令的計數值加1
profile_tick()是在每個時鐘tick的時候將響應的指令計數值加1
time_hook 一般被其它profile工具,如oprofile用來在每次中斷發生時,添加自己的處理函數。
profile信息其實包括任務的所有統計信息,所以可以用profile_event_register()在任務退出或者用戶空間內存釋放時,掛載自己的回調函數,以統計這些信息。
profile信息的統計在smp和up下不同,即profile_hit的實現不同,smp的實現中有一個PerCPU cache,這可避免多個CPU在profile統計時效率低下問題。具體可以察看源代碼kernel/profile.c
oprofile使用:
oprofile平臺相關工具,請注意自己平臺支持的event.
總結
以上是生活随笔為你收集整理的ppc linux 性能,用profile和oprofile监视视linux性能!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python数据分析兼职能挣钱吗_Pyt
- 下一篇: 本机连接opc server有部分数据不