簡體   English   中英

如何找到應用程序的 kernel 延遲?

[英]How to find the kernel latency for an application?

經過我自己的長期研究,我來到這里尋求幫助。

我想測量應用程序 kernel 的延遲。

例如,我有一個基於 C 的應用程序,當我運行它時,我想測量 kernel 調度它所花費的時間。

我在我的 C 應用程序中使用了 time.h 庫,但它告訴我執行該應用程序所花費的時間,而不是 kernel 安排它所花費的時間。

PS:我一直在使用 PREEMPT_RT 補丁,我的 kernel 已經是 PREEMPTIVE,如果該信息對您的回答有用的話。

bcc 工具 ( https://github.com/iovisor/bcc ) 具有報告調度程序延遲的 runqlat 工具。 它可以報告整個系統或每個進程的調度程序延遲。

這是一個例子:

    # ./runqlat 
Tracing run queue latency... Hit Ctrl-C to end.
^C
     usecs               : count     distribution
         0 -> 1          : 233      |***********                             |
         2 -> 3          : 742      |************************************    |
         4 -> 7          : 203      |**********                              |
         8 -> 15         : 173      |********                                |
        16 -> 31         : 24       |*                                       |
        32 -> 63         : 0        |                                        |
        64 -> 127        : 30       |*                                       |
       128 -> 255        : 6        |                                        |
       256 -> 511        : 3        |                                        |
       512 -> 1023       : 5        |                                        |
      1024 -> 2047       : 27       |*                                       |
      2048 -> 4095       : 30       |*                                       |
      4096 -> 8191       : 20       |                                        |
      8192 -> 16383      : 29       |*                                       |
     16384 -> 32767      : 809      |****************************************|
     32768 -> 65535      : 64       |***                                     |

要獲取進程的調度程序延遲,需要指定 -p 開關。 -m 開關指定毫秒而不是微秒。

# ./runqlat -mp 4505 1
Tracing run queue latency... Hit Ctrl-C to end.

     msecs               : count     distribution
         0 -> 1          : 1        |*                                       |
         2 -> 3          : 2        |***                                     |
         4 -> 7          : 1        |*                                       |
         8 -> 15         : 0        |                                        |
        16 -> 31         : 25       |****************************************|
        32 -> 63         : 3        |****                                    |

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM