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