gpt4 book ai didi

linux - 我如何在内核中使用性能计数器?

转载 作者:IT王子 更新时间:2023-10-29 01:26:26 25 4
gpt4 key购买 nike

我想访问内核中的性能计数器。我发现了很多在用户空间使用性能计数器的方法,但是你能告诉我一些在内核空间使用它们的方法吗?

不要指定工具名称,我想编写自己的代码,最好是内核模块。我正在使用内核为 3.18.1 的 Ubuntu。

最佳答案

http://www.cise.ufl.edu/~sb3/files/pmc.pdf http://www.cs.inf.ethz.ch/stricker/lab/doc/intel-part4.pdf第一个 pdf 包含有关如何使用 pmc 的说明。

第二个包含 perfeventsel0 和 perfeventsel1 的地址。我在下面展示了一个示例。您需要根据您的要求设置事件编号和 umask。

void SetUpEvent(void){
int reg_addr=0x186;
int event_no=0x0024;
int umask=0x3F00;
int enable_bits=0x430000;
int event=event_no | umask | enable_bits;


__asm__ ("wrmsr" : : "c"(reg_addr), "a"(event), "d"(0x00));

/* Read the performance monitor counter */
long int ReadCounter(void){
long int count;
long int eax_low, edx_high;
int reg_addr=0xC1;


__asm__("rdmsr" : "=a"(eax_low), "=d"(edx_high) : "c"(reg_addr));
count = ((long int)eax_low | (long int)edx_high<<32);

return count;
}

关于linux - 我如何在内核中使用性能计数器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29765275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com