gpt4 book ai didi

assembly - 如何读取特定内核的(性能计数器)寄存器?

转载 作者:行者123 更新时间:2023-12-02 20:04:26 26 4
gpt4 key购买 nike

我可以读/写 MSR 寄存器,但我不知道如何指定应运行哪个核心的 MSR。

比如我想分别记录每个核心的L2私有(private)缓存未命中,那么我需要为每个核心指定核心id。

我知道 smp_call_function() 可以在所有内核上调用代码。如果我添加一个记录此代码正在运行的核心 ID 的 insn 并使用 smp_call_function(),它应该可以工作。但如果我只想知道核心 1 的 L2 私有(private)缓存未命中,我将不得不让所有核心记录该数字,这对我来说并不整洁。

有没有更好的解决方案?

我的读/写操作MSR代码:

   mov $0x0001010E, %eax                # Write selector value to EAX
xor %edx, %edx # Zero EDX
mov $0x187, %ecx # Write logical register id to ECX (IA32_PERFEVTSEL1)
wrmsr

mov $0xc2, %ecx # Address of MSR IA32_PMC1
rdmsr # Read value into EAX:EDX (EAX contains low-order bytes)

最佳答案

使用smp_call_function_single在特定CPU上运行代码。

关于assembly - 如何读取特定内核的(性能计数器)寄存器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21409510/

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