Linux Profiling 2 - get_cycles

收錄在 Ameba 的 100 篇


--
前篇: Linux Profiling 1 - ktime_get()



若測量時間較短, 且需要高精密度, 可以使用 get_cycles()
這個是用到平台 cpu counter, 定義在 linux/timex.h


相對於前篇, 我們這次用 sysfs 來做, 可以不用 insmod/rmmod

1. kobject_create_and_add()
    會在 /sys/kernel 下建立一個 e.g. "kbench" 的目錄

2. sysfs_create_group()
    在 /sys/kernel/kbench 目錄下, 依照屬性建立相關檔案



可以建立相對應的 attributes, 一般常見為
  __ATTR_RO() : read only, 和 __ATTR_RW() : read write

cat 該檔案 for read 時, 會呼叫 xxxx_show() 的函式,
可以把要顯示的內容填入 buffer string


echo > 寫入該檔案時, 會呼叫 xxxx_store() 的函式


執行:

    cat /sys/kernel/kbench/cycles
    可以發現, avg: 66 cycles, 十分固定,
    CPU 這台 是 800MHz (cpu0,1,2) / 1.9GHz  (cpu3)
    以 800MHz 來計算, 時間為  82.5ns

   但 cat /sys/kernel/kbench/ktime, 就不固定, 結果會落在 78~135 ns


留言

熱門文章