本工具用途為量化 scheduling latency / OS jitter。
在各個處理器核上綁定 (pin) 一個執行緒,並以 clock_nanosleep() 進行 1 us 的 sleep。
在 sleep 結束後,呼叫 clock_gettime() 獲取當下 timestamp,並將其與原先指定的 wakeup 時間相減,所得的差即為 scheduling latency / OS jitter。
從上述介紹,我們可推斷 jitterdebugger 生成的 task 為 interactive task,因為其相關 task 大部分時候在 sleep。
取得原始程式碼:
執行 make 命令編譯專案。
預期可以在專案目錄下看到 jitterdebugger 執行檔。
使用以下命令執行可動態觀察輸出,倘若不使用參數 -v 則會在結束 (Ctrl + C) 時印出相關統計:
(會需要 sudo 的原因是 jitterdebugger 在測量期間會關閉處理器的 C-state,避免處理器進入省電模式進而增加 jitter 的可能性,而只有 root 才有權限操作相關檔案)
預期可以看到類似以下輸出:
C 表示執行次數
T 表示 pin 到 percpu 執行的 thread 的 id
輸出結果的時間單位為 (可指定參數 -N 將單位更改為 nanosecond)
值得注意的是,-c 這個參數可讓我們在背景執行自訂的工作負載,例如若想在背景執行 stress,可透過以下命令:
此外,本工具還支援以圖片方式輸出量測結果,不過首先需要安裝以下 Python 套件:
以 PIP 套件管理工具安裝相關套件的話可使用以下命令:
首先我們需將 jitterdebugger 的輸出導向至一目錄,例如:
接著執行 jitterplot 將數據輸出為 JPG 格式:
預期可得到類似以下圖片: