linux – 内核中特定于线程的单调时钟源

是否存在可供内核模块使用的单调时钟源,该内核模块可以附加到线程,只有在关联的线程运行时才会增加?

我正在寻找能够像perf API一样工作的东西,除了测量到目前为止所消耗的CPU时间总量(以纳秒为单位)而不是测量周期或指令.

在用户空间中,您具有librt中的clock_gettime函数,您可以在其中指定CLOCK_PROCESS_CPUTIME_ID作为获取上述行为的时钟类型.查看source code of clock_gettime,此函数从pthread库中调用另一个名为__pthread_clock_gettime的函数.

我正在寻找类似的东西,可以从内核模块在Linux内核中设置并附加到任务,给定指向与任务相关联的task_struct的指针.

解决方法

Performance API使您可以访问各种硬件事件和计数器.它有一个低级和高级API. PAPI_epc函数应该符合您的需求:

http://icl.cs.utk.edu/papi/docs/db/d93/group__high__api.html#ga2f8766ae458b43d41e57e78b930a4f61

相关文章

linux常用进程通信方式包括管道(pipe)、有名管道(FIFO)、...
Linux性能观测工具按类别可分为系统级别和进程级别,系统级别...
本文详细介绍了curl命令基础和高级用法,包括跳过https的证书...
本文包含作者工作中常用到的一些命令,用于诊断网络、磁盘占满...
linux的平均负载表示运行态和就绪态及不可中断状态(正在io)的...
CPU上下文频繁切换会导致系统性能下降,切换分为进程切换、线...