Cyclictest學習記錄

 

Cyclictest是 rt-tests 下的一個測試工具,一般主要用來測試使用內核的延遲,從而判斷內核的實時性。

1、cyclictest 安裝

Debian / Ubuntu 系統下可以直接使用apt-get install rt-tests 來安裝cyclictest。

2、cyclictest 的使用

在rt-tests的路徑下,我們可以使用 ./cyclictest 來運行cyclictest, 而在別的目錄下,我們就需要指定 cyclictest的路徑來使用,比如說 /home/long/rt-tests/cyclictest ,或者你也可以直接將 rt-tests的路徑下的 cyclictest 拷貝到 /bin/ 下,以後就可以直接使用 cyclictest 而不需要指定路徑了

3、cyclictest 的參數介紹

關於cyclictest 的各個參數具體含義建議大家還是用時間具體看看 cyclictest --help 的信息

-p PRIO --prio=PRIO 最高優先級線程的優先級 使用時方法爲: -p 90 / --prio=90 -m --mlockall 鎖定當前和將來的內存分配

-c CLOCK --clock=CLOCK 選擇時鐘 cyclictest -c 1 0 = CLOCK_MONOTONIC (默認) 1 = CLOCK_REALTIME

-i INTV --interval=INTV 基本線程間隔,默認爲1000(單位爲us),下面介紹原理的時候會提到

-l LOOPS --loops=LOOPS 循環的個數,默認爲0(無窮個),與 -i 間隔數結合可大致算出整個測試的時間, 比如 -i 1000 -l         1000000 ,總的循環時間爲1000*1000000=1000000000 us =1000s ,所以大致爲16分鐘多。

-n --nanosleep 使用 clock_nanosleep

-h HISTNUM --histogram=US 在執行完後在標準輸出設備上畫出延遲的直方圖(很多線程 有相同的權限) US爲最大的跟蹤時間限制,這個在下面介紹實例時可以用到,結合gnuplot 可以畫出我們測試的結果圖。

-q --quiet 使用-q 參數運行時不打印信息,只在退出時打印概要內容,結合-h HISTNUM參數會在退出時 打印HISTNUM 行統計信息以及一個總的概要信息。

-f --ftrace ftrace函數跟蹤(通常與-b 配套使用,其實通常使用 -b 即可,不使用 -f )

-b USEC --breaktrace=USEC 當延時大於USEC指定的值時,發送停止跟蹤。USEC,單位爲謬秒(us)。

 

推薦參數以及結果實例:

sudo cyclictest -p 90 - m -c 0 -i 200 -n -h 100 -q -l 1000000

使用 -p 90給cyclictest 賦優先級90,使用-m參數鎖定內存分配,使用 -c 0指定使用默認的MONOTONIC 時鐘, -i 200 指定一個循環爲200us,結合 -l 1000000爲總共1000000個循環,此外-n 爲使用nanosleep 而不是簡單的sleep,-q爲在運行時不打印即時信息,-h 100 爲總共統計100個信息在最後的結果中。

cyclictest用於測試定時器的精度,假定定時器時間間隔爲 interval,定時器啓動前記錄下當前時間t1,定時器到時後記錄下當前時間t2,則測出的時延爲 t2 - (t1 + interval)。

 

4、cyclictest輸出結果含義

T: 0 序號爲0的線程

P: 0 線程優先級爲0

C: 9397 計數器。線程的時間間隔每達到一次,計數器加1 I: 1000 時間間隔爲1000微秒(us)

Min: 最小延時(us)

Act: 最近一次的延時(us)

Avg:平均延時(us)

Max: 最大延時(us)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章