2013-06-05 46 views
0

我試圖產生的Android環境中FTrace文件,使用:如何將Android FTrace精度提高到微秒?

[email protected]:# echo 1 > /sys/kernel/debug/tracing/events/sched/sched_switch/enable 
[email protected]:# echo 1 > /sys/kernel/debug/tracing/tracing_on 
[email protected]:# cat /sys/kernel/debug/tracing/trace > mytracefile.txt 
[email protected]:# echo 0 > /sys/kernel/debug/tracing/tracing_on 
[email protected]:# echo 0 > /sys/kernel/debug/tracing/events/sched/sched_switch/enable 

的問題是,在mytracefile.txt時間戳的精度是毫秒

  <idle>-0  [000] d.h7 14186.690000: sched_wakeup: comm=tfm_b6bcf800 pid=1714 prio=35 success=1 target_cpu=000 
      <idle>-0  [000] d..3 14186.690000: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=tfm_b6bcf800 next_pid=1714 next_prio=35 
    tfm_b6bcf800-1714 [000] d..3 14186.690000: sched_switch: prev_comm=tfm_b6bcf800 prev_pid=1714 prev_prio=35 prev_state=D|W ==> next_comm=swapper/0 next_pid=0 next_prio=120 
      <idle>-0  [001] d.h3 14186.690000: sched_wakeup: comm=Player Aud Mixe pid=146 prio=35 success=1 target_cpu=001 
      <idle>-0  [001] d..3 14186.690000: sched_switch: prev_comm=swapper/1 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=Player Aud Mixe next_pid=146 next_prio=35 
Player Aud Mixe-146 [001] d..3 14186.690000: sched_switch: prev_comm=Player Aud Mixe prev_pid=146 prev_prio=35 prev_state=D ==> next_comm=swapper/1 next_pid=0 next_prio=120 
      <idle>-0  [001] d.h3 14186.690000: sched_wakeup: comm=Player Aud Mixe pid=146 prio=35 success=1 target_cpu=001 
      <idle>-0  [001] d..3 14186.690000: sched_switch: prev_comm=swapper/1 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=Player Aud Mixe next_pid=146 next_prio=35 
Player Aud Mixe-146 [001] d..3 14186.690000: sched_switch: prev_comm=Player Aud Mixe prev_pid=146 prev_prio=35 prev_state=S ==> next_comm=swapper/1 next_pid=0 next_prio=120 
      <idle>-0  [001] d.h3 14186.700000: sched_wakeup: comm=Player Aud Mixe pid=146 prio=35 success=1 target_cpu=001 
      <idle>-0  [001] d..3 14186.700000: sched_switch: prev_comm=swapper/1 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=Player Aud Mixe next_pid=146 next_prio=35 

通常,它應該是微秒的順序,就像14186.691234而不只是14186.690000

我已經測試了所有其他trace_clock選項我有(本地,全局和反),但結果都是一樣的。更改該參數不會更改輸出文件中的任何內容。

我仔細地關注了FTrace documentation,但我不知道配置中還有哪些變化。

搜索在互聯網上我只能夠找到這個bug報告,但它並沒有解決:http://lists.linaro.org/pipermail/linaro-dev/2011-February/002720.html

任何建議?

我必須安裝內核中的其他模塊嗎?

更新:

  • 的Android版本:4.2.2
  • 內核Linux版本:3.4.7

的dmesg輸出也呈現出毫秒精度:

<4>[ 38.130000] oom_adj 0 => oom_score_adj 0 
<4>[ 38.130000] oom_adj 1 => oom_score_adj 58 
<4>[ 38.140000] oom_adj 2 => oom_score_adj 117 
<4>[ 38.140000] oom_adj 4 => oom_score_adj 235 
<4>[ 38.150000] oom_adj 9 => oom_score_adj 529 
<4>[ 38.150000] oom_adj 15 => oom_score_adj 1000 

謝謝,

+0

你需要看看你的Android設備上使用的內核版本。大概檢查內核源碼可能會有所幫助。 –

+0

@rakib謝謝,我添加了內核版本並對問題做了一些更新。 –

+0

那麼,我所說的是尋找你正在使用的Android內核。您需要查看Android內核的ftrace功能,是否在ftrace代碼中進行了任何修改。一般Android內核包含一些穩定的Linux內核的修改。 –

回答

0

我不認爲在Android中有一個納秒精度的計時器。毫秒是最好的,你可以得到。

+0

對不起,我對這個問題做了更新。我對**微秒**感興趣,我確信我們可以獲得這種精度,因爲它在FTrace文檔中明確顯示。謝謝。 –

0

幾乎所有硬件都能夠生成毫秒精度的時間,但定時器的精度取決於硬件。現在許多系統提供微秒級或更高分辨率的定時器。這些通常可以配置爲提供所需的精度。